Pyexcel无法合并多份.xls文件,寻求解决方案
解决Pyexcel合并多个XLS文件到单个工作簿的问题
嘿,我明白你想用Pyexcel把多个.xls文件合并成一个工作簿,每个文件对应同名工作表的需求,代码跑不起来确实挺让人头疼的。虽然你没贴出控制台的具体报错信息,但我可以给你梳理几个常见的问题点,再附上经过验证的可行代码,帮你搞定这个事儿!
常见的失败原因排查
- 依赖库未完整安装:Pyexcel处理.xls文件需要依赖
pyexcel-xls插件,只装pyexcel本身是不够的,得确保这个插件也安装到位。 - 文件路径问题:要么是文件路径写错了,要么是脚本所在目录和XLS文件不在同一位置,导致程序找不到目标文件。
- 文件名特殊字符:如果你的XLS文件名包含空格、中文或者特殊符号,可能会导致Pyexcel读取异常。
- Pyexcel版本兼容:不同版本的Pyexcel可能有API变化,建议使用稳定的最新版。
正确的Pyexcel实现代码
先确保安装了必要的库:
pip install pyexcel pyexcel-xls
然后用下面的代码尝试:
import pyexcel as pe import os # 设置存放XLS文件的文件夹路径,比如当前目录下的xls_files文件夹 xls_folder = "./xls_files" # 最终输出的合并后工作簿名称 output_file = "merged_workbook.xls" # 创建一个空的工作簿对象 merged_book = pe.Book() # 遍历文件夹下的所有XLS文件 for filename in os.listdir(xls_folder): if filename.endswith(".xls"): # 拼接完整文件路径 file_path = os.path.join(xls_folder, filename) # 获取不带后缀的文件名作为工作表名称 sheet_name = os.path.splitext(filename)[0] # 读取当前XLS文件的数据 sheet = pe.get_sheet(file_name=file_path) # 将当前工作表添加到合并工作簿中 merged_book[sheet_name] = sheet # 保存合并后的工作簿 merged_book.save_as(output_file) print(f"合并完成!文件已保存为 {output_file}")
备选方案:用Pandas实现(兼容性更好)
如果Pyexcel还是有问题,试试用Pandas结合xlrd(读xls)和openpyxl(写xlsx)的方案,这个在实际项目里更常用,兼容性也更强:
pip install pandas xlrd openpyxl
代码示例:
import pandas as pd import os from openpyxl import load_workbook xls_folder = "./xls_files" output_file = "merged_workbook.xlsx" # 创建一个ExcelWriter对象,用于写入多个工作表 with pd.ExcelWriter(output_file, engine='openpyxl') as writer: for filename in os.listdir(xls_folder): if filename.endswith(".xls"): file_path = os.path.join(xls_folder, filename) sheet_name = os.path.splitext(filename)[0] # 读取xls文件 df = pd.read_excel(file_path, engine='xlrd') # 将DataFrame写入对应的工作表 df.to_excel(writer, sheet_name=sheet_name, index=False) print(f"合并完成!文件已保存为 {output_file}")
如果还是有问题,把控制台的具体报错信息贴出来,我可以帮你进一步排查!
内容的提问来源于stack exchange,提问作者Shred
相关产品推荐
相关产品推荐

