提取多个EXCEL(每个EXCEL列名不相同)到XLS中,用xlwt按照不同列名设置列宽,,
时间: 2024-03-15 11:47:39 浏览: 69
python对多个Excel文件中的多个Sheet进行合并(每个sheet名须一致)
处理这个问题可以分成两个步骤:1. 提取多个Excel到一个XLS中;2. 按照不同列名设置列宽。下面是一个示例代码,可以帮助你完成这个任务:
```python
import xlrd
import xlwt
# 定义一个字典,存储不同列名对应的列宽
col_width = {
'列名1': 3000,
'列名2': 4000,
'列名3': 5000,
# ...
}
# 创建一个新的工作簿,用于存储提取的Excel数据
result_book = xlwt.Workbook(encoding='utf-8')
result_sheet = result_book.add_sheet('Sheet1')
# 遍历多个Excel文件,将数据提取到新的工作簿中
excel_files = ['file1.xlsx', 'file2.xlsx', 'file3.xlsx']
for index, filename in enumerate(excel_files):
# 打开Excel文件并读取数据
workbook = xlrd.open_workbook(filename)
sheet = workbook.sheet_by_index(0)
# 处理第一行,即列名
if index == 0:
for col_index in range(sheet.ncols):
col_name = sheet.cell_value(0, col_index)
result_sheet.write(0, col_index, col_name)
# 设置列宽
if col_name in col_width:
result_sheet.col(col_index).width = col_width[col_name]
# 处理数据行
for row_index in range(1, sheet.nrows):
for col_index in range(sheet.ncols):
cell_value = sheet.cell_value(row_index, col_index)
result_sheet.write(row_index + index, col_index, cell_value)
# 保存新的工作簿
result_book.save('result.xls')
```
在上面的代码中,我们首先定义了一个字典 `col_width`,用于存储不同列名对应的列宽。然后创建一个新的工作簿 `result_book`,用于存储提取的Excel数据。接着遍历多个Excel文件,将数据提取到新的工作簿中。在处理第一个Excel文件时,我们首先处理第一行,即列名,将列名写入到新的工作簿中,并根据列名设置列宽。在处理数据行时,我们将每个单元格的数据写入到新的工作簿中,其中行号需要加上之前Excel文件中的行数,以保证数据不重复。最后保存新的工作簿 `result_book`。
阅读全文