使用 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)
我正在使用 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)