import os import zipfile import pandas as pd def zipjie(): f = zipfile.ZipFile("E:\dsad\dsad据\d8.rar", 'r') # 压缩文件位置 for file in f.namelist(): f.extract(file, "E:\dsad\dsad据") # 解压位置 f.close() # 指定要查找的文件夹路径 folder_path = "E:\王dsad\dsad据" # 指定要选取的字段 selected_columns = ['dsad', 'dasda','工dadsa'] # 使用 os 模块列出文件夹中所有的 XLS 文件 xls_files = [f for f in os.listdir(folder_path) if f.endswith('.xls')] # 创建一个新的 Excel 文件 writer = pd.ExcelWriter('E:\dsad\dsad据\qwd.xlsx') # 循环对每个 XLS 文件进行操作 for xls_file in xls_files: # 构造文件路径 file_path = os.path.join(folder_path, xls_file) # 使用 pandas 打开 XLS 文件 df = pd.read_excel(file_path) # 选取指定的字段,并判断,若不存在的字段跳过 valid_columns = [col for col in selected_columns if col in df.columns] if len(valid_columns) < len(selected_columns): print(f"Warning: {xls_file} contains invalid column names, skipping them") selected_data = df[valid_columns] # 将选取的数据写入到新的 Excel 文件中 selected_data.to_excel(writer, sheet_name=xls_file) # 保存并关闭新的 Excel 文件 writer.save() writer.close() zipjie() 帮我改造下,把写入excel的内容进行追加,而并不是创建新的sheet
时间: 2024-03-15 13:47:33 浏览: 171
可以尝试将代码中的以下两行:
```
# 创建一个新的 Excel 文件
writer = pd.ExcelWriter('E:\dsad\dsad据\qwd.xlsx')
...
# 将选取的数据写入到新的 Excel 文件中
selected_data.to_excel(writer, sheet_name=xls_file)
...
# 保存并关闭新的 Excel 文件
writer.save()
writer.close()
```
修改为:
```
# 检查 Excel 文件是否存在
file_path = 'E:\dsad\dsad据\qwd.xlsx'
if os.path.exists(file_path):
# 如果文件存在则使用 pd.ExcelWriter(mode='a') 打开,追加数据
writer = pd.ExcelWriter(file_path, mode='a')
else:
# 如果文件不存在则创建新的 ExcelWriter 对象
writer = pd.ExcelWriter(file_path)
...
# 将选取的数据追加到现有的 Excel 文件中
selected_data.to_excel(writer, sheet_name=xls_file, index=False, header=False, startrow=len(pd.read_excel(file_path, sheet_name=xls_file)))
...
# 保存并关闭 Excel 文件
writer.save()
writer.close()
```
这样就可以实现对已有 Excel 文件的追加写入了。需要注意的是,`to_excel()` 方法中的 `startrow` 参数指定了数据从哪一行开始写入,需要计算出现有的 Sheet 中已经有多少行数据,才能正确地追加写入。
阅读全文