使用XLSXWRITER的Python:覆盖电子表格

时间:2014-10-03 17:39:31

标签: python overwrite xlsxwriter

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

  1. 创建工作簿
  2. 创建工作表
  3. 定义格式
  4. 在第1行中写入列标题(利用第3步中的格式)
  5. 在后续行中写入实际数据(无特殊格式)
  6. 我可以创建工作簿/工作表。然后我定义格式并使用'COLUMN HEADERS'填充工作表row1列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”语句时,列标题会正确写入电子表格
    2. 如果我打开电子表格,我会看到row1列A:H正确填充并按header_format格式化,列宽为30。

      1. 当我随后匹配“else”语句时,电子表格会被覆盖
      2. 如果我打开电子表格,我看到row1完全为空(所有列标题/格式化现已消失),而row2正确填充了设备DATA(无格式化)。

        显然,期望的行为是让row1具有COLUMN HEADERS而row2-具有DATA。我想将'追加'数据发送到第二行的电子表格 - 无论第一行已经写入了什么。

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

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

1 个答案:

答案 0 :(得分:1)

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

调用workbook.close()后,文件将被写入并关闭。