这是我的 Python 脚本使用 XLSXwriter 遵循的基本流程:
- 创建工作簿
- 创建工作表
- 定义格式
- 在 row1 中写入列标题(利用 Step3 中的格式)
- 在后续行中写入实际数据(无特殊格式)
我可以创建工作簿/工作表。然后,我定义格式并使用“COLUMN HEADERS”填充工作表第 1 行列 A:H,这表示将写入后续行的每一列的 DATA 类型。这就是成功。
我的代码和问题描述如下:
# write column header information
if total_xls_records == 1:
worksheet1.set_row(0, 15, header_format)
worksheet1.set_column('A:H',30)
worksheet1.write('A1', 'Hostname')
worksheet1.write('B1', 'Serial')
worksheet1.write('C1', 'Manufacturer')
worksheet1.write('D1', 'Model')
worksheet1.write('E1', 'RAM')
worksheet1.write('F1', 'Flash')
worksheet1.write('G1', 'Version')
worksheet1.write('H1', 'SW_Image')
# write device data to spreadsheet
else:
worksheet1.set_row(total_xls_records, 15)
worksheet1.set_column('A:H',30)
worksheet1.write('A2', data[0])
worksheet1.write('B2', data[1])
worksheet1.write('C2', data[2])
worksheet1.write('D2', data[3])
worksheet1.write('E2', data[4])
worksheet1.write('F2', data[5])
worksheet1.write('G2', data[6])
worksheet1.write('H2', data[7])
我正在从列表中提取数据以填充我的单元格。这个 if/else 的结果是:
- 当我匹配“if”语句时,列标题会正确写入电子表格
如果我打开电子表格,我会看到 row1 列 A:H 正确填充并按 header_format 格式化,列宽为 30。
- 当我随后匹配“else”语句时,电子表格被覆盖
如果我打开电子表格,我会看到 row1 完全为空(所有列标题/格式现在都消失了),并且 row2 正确填充了设备数据(无格式)。
显然,期望的行为是让 row1 与 COLUMN HEADERS 和 rows2 一起使用 DATA。我想将数据“附加”到 rows2 中的电子表格 - 无论 row1 是否已经被写入。
是的,我知道 else 语句当前调用单元格的“静态列表”(A2-H2),这意味着 else 的多个匹配项当前会将 DATA 写入同一组单元格。它目前是这样写的,因为我正处于针对我刚才描述的问题的“故障排除模式”。对我来说,在重写我的“单元格填充”代码之前修复电子表格覆盖问题是有意义的。
提前感谢您提供的任何帮助。