使用Spire.XLS合并Excel后,openpyxl加载出现defaultColWidthPt参数错误如何解决?
解决方法
这个错误是因为Spire.XLS保存Excel文件时写入了defaultColWidthPt属性,而你当前安装的openpyxl版本不支持该属性。以下是几种解决方式:
方法1:升级openpyxl到最新版本
运行以下命令更新openpyxl,新版本已经支持该属性:
pip install --upgrade openpyxl
方法2:修改代码,不用openpyxl处理文件
你的代码中使用openpyxl只是为了删除最后一个工作表,这是因为初始创建workbook1时多建了一个空工作表。可以直接修改Spire.XLS的代码逻辑,避免创建多余工作表,从而完全不需要openpyxl:
修改后的完整代码:
def manytoonebyspire(): from spire.xls import Workbook from spire.xls import ExcelVersion workbook = Workbook() workbook.LoadFromFile('manysheetbook.xlsx') workbook1 = Workbook() # 移除初始创建空工作表的代码 i = 0 for sheet in workbook.Worksheets: workbook1.CreateEmptySheet() newsheet = workbook1.Worksheets[i] newsheet.Name = sheet.Name newsheet.CopyFrom(sheet) i += 1 workbook1.SaveToFile('123.xlsx', ExcelVersion.Version2010) workbook.Dispose() workbook1.Dispose() if __name__=='__main__': import time starttime = time.time() manytoonebyspire() endtime = time.time() print(endtime - starttime)
方法3:用Spire.XLS删除多余工作表(如果必须保留原逻辑)
如果你不想修改循环逻辑,可以在保存文件前,用Spire.XLS自身的方法删除多余的工作表,代替openpyxl的操作:
在workbook1.SaveToFile前添加以下代码:
# 删除最后一个工作表 workbook1.Worksheets.RemoveAt(workbook1.Worksheets.Count - 1)
然后移除所有openpyxl相关的代码即可。
内容的提问来源于stack exchange,提问作者陈梁维
相关产品推荐
相关产品推荐

