2

这是我的 Python 脚本使用 XLSXwriter 遵循的基本流程:

  1. 创建工作簿
  2. 创建工作表
  3. 定义格式
  4. 在 row1 中写入列标题(利用 Step3 中的格式)
  5. 在后续行中写入实际数据(无特殊格式)

我可以创建工作簿/工作表。然后,我定义格式并使用“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 的结果是:

  1. 当我匹配“if”语句时,列标题会正确写入电子表格

如果我打开电子表格,我会看到 row1 列 A:H 正确填充并按 header_format 格式化,列宽为 30。

  1. 当我随后匹配“else”语句时,电子表格被覆盖

如果我打开电子表格,我会看到 row1 完全为空(所有列标题/格式现在都消失了),并且 row2 正确填充了设备数据(无格式)。

显然,期望的行为是让 row1 与 COLUMN HEADERS 和 rows2 一起使用 DATA。我想将数据“附加”到 rows2 中的电子表格 - 无论 row1 是否已经被写入。

是的,我知道 else 语句当前调用单元格的“静态列表”(A2-H2),这意味着 else 的多个匹配项当前会将 DATA 写入同一组单元格。它目前是这样写的,因为我正处于针对我刚才描述的问题的“故障排除模式”。对我来说,在重写我的“单元格填充”代码之前修复电子表格覆盖问题是有意义的。

提前感谢您提供的任何帮助。

4

1 回答 1

2

XlsxWriter 无法重写文件或重复保存到文件。

一旦workbook.close()被调用,文件就会被写入并关闭。

于 2014-10-04T12:33:02.903 回答