You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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,提问作者陈梁维

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 02:26:04