优化这段代码,让程序也能合并.xlsx或.xls格式文件
时间: 2024-12-26 17:30:00 浏览: 4
这段代码目前只适用于CSV格式的文件,为了使其能够合并`.xlsx`和`.xls`格式的Excel文件,我们需要使用能处理多种文件格式的库,如pandas。下面是优化后的示例:
```python
import pandas as pd
from openpyxl import load_workbook
# ... 其他不变部分 ...
# 检查文件扩展名,以便处理Excel文件
if file.endswith(('.xlsx', '.xls')):
excel_data = pd.read_excel(file, engine='openpyxl') # 使用openpyxl加载.xlsm/xls/xlsb等
else:
with open(filez, 'r', encoding='utf-8') as csv_file:
csv_data = list(csv.reader(csv_file, delimiter=',')) # 如果是CSV
if topbz == 0: # 第一个文件
data = csv_data
topbz = 1
else:
data.extend(csv_data) # 合并数据
# 现在data包含了所有文件的内容,统一转换成DataFrame并写入merged_file
if not isinstance(data[0], pd.DataFrame): # 如果不是DataFrame,尝试转换
data = [pd.DataFrame(line, columns=headers) for line in data]
merged_df = pd.concat(data, ignore_index=True) # 合并所有数据到一个DataFrame
merged_df.to_csv(output_file, index=False, header=True, encoding='utf-8')
# ... 其他不变部分 ...
```
这个优化版本首先检查文件扩展名,如果是Excel文件,就使用pandas的`read_excel`函数读取。然后统一处理所有数据(无论原先是CSV还是Excel),合并到一个DataFrame中,最后写入新的CSV文件。注意这里需要安装`openpyxl`库来处理Excel文件。
阅读全文