使用 xlsxwriter merge_row 错误

Using xlsxwriter merge_row errors

我正在使用 xlsxwriter 导出一个 excel 文件,我正在尝试使用 .merge_range() 合并多个单元格,但我似乎收到了与常量内存相关的错误,即使我已将其设置为 False .

工作簿启动如下:

workbook = xlsxwriter.Workbook(r'\network\Checking doc\Monthly Checks.xlsx', {'constant_memory' : False})

单元格格式由以下人员处理:

merge_header = workbook.add_format({'align' : 'center', 'valign' : 'vcenter', 'border' : 1})
merge_header.set_bg_color('#BFBFBF')

单元格的合并使用了for循环中的for循环,它通过2个列表来获取单元格坐标。

我的列表中没有我知道的好名字,但它们是:

other_checkheads = ["C6 - LOGS", "C7 - HWS", "C8 - TMP", "C9 - WUP", 

"C10 - SWUP", "C11 - ADGP", "C12 - FWSWFIRM", "C13 - WBFIL", "C14 - FILES", "C15 - DOMPASS", "C16 - NAT",
"C17 - SECGP", "C18 - BIOS", "C19 - BIOSFW", "C20 - MOT", "C21 - SSL", "C22 - WARR"]
checkheads_letters = ["Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "AE", "AF", "AG"]

循环是:

for letter in checkheads_letters:
                for head in other_checkheads:
                    row = ((letter + str(2)) + (":") + (letter +str(4)))
                    worksheet.merge_range(row, head, merge_header)
                    print (row)

当我 运行 尝试打开文档时,我收到错误消息: “我们发现 'Monthly Checks.xlsx' 中的某些内容存在问题。您希望我们尽可能多地尝试恢复吗?如果您信任此工作簿的来源,请单击“是”。

我单击“是”,然后收到一个正在使用的文件错误,指出该文档已被 'another user' 锁定以供编辑。如果我 select 通知此人,它会成功打开文档,并附上有关所做修复的注释。

如果我完全删除 fr 循环,文档打开时不会出现任何错误。

您收到错误消息是因为 for 循环的第一行将 merge_range 函数应用到同一单元格范围内 17 次(因为您的列表有那么多元素)。

这是错误:

for letter in checkheads_letters:
    for head in other_checkheads:
        row = ((letter + str(2)) + (":") + (letter +str(4)))
        worksheet.merge_range(row, head, None)

这个可以工作:

for letter in checkheads_letters:
    head = other_checkheads[checkheads_letters.index(letter)]
    row = ((letter + str(2)) + (":") + (letter +str(4)))
    worksheet.merge_range(row, head, None)