是否可以在XlsxWriter中为每次迭代创建一个新列

时间:2016-08-12 13:19:10

标签: excel python-3.x xlsxwriter

我想使用XlsxWriter将数据写入Excel列。一个'设置'每次迭代都会写入数据。每组应该写在一个单独的列中。我该怎么办?
我尝试使用col值,如下所示:

  • [1]我在循环外定义i=0,然后将其增加1并设置col=i。完成此操作后,输出为空白。对我来说,这是最合乎逻辑的解决方案。我不知道为什么它不会工作。
  • [2] i内定义了循环内容。发生这种情况时会写入一列。
  • [3]我以标准方式定义col。这按预期工作:写一列。

我的代码:

import xlsxwriter

txt_file = open('folder/txt_file','r')
lines = dofile.readlines()

# [1]Define i outside the loop. When this is used output is blank.
i = 0
for line in lines:

    if condition_a is met:
        #parse text file to find a string. reg_name = string_1.

    elif condition_b:
        #parse text file for a second string. esto_name = string_2.

    elif condition_c:
        #parse text file for a group of strings. 
        # use .split() to append these strings to a list.
        # reg_vars = list of strings.

        #[2] Define i inside the loop. When this is used one column gets written. Relevant for [1] & [2].
        i+=1 #Increment for each loop
        row=1
        col=i #Increments by one for each iteration, changing the column.


        #[3] #Define col =1. When this is used one column also gets written.
        col=1 

        #Open Excel
        book= xlsxwriter.Workbook('folder/variable_list.xlsx')
        sheet = book.add_worksheet()

        #Write reg_name
        sheet.write(row, col, reg_name)
        row+=1

         #Write esto_name
        sheet.write(row, col, esto_name)
        row+=1
        #Write variables
        for variable in reg_vars:
            row+=1
            sheet.write(row, col, variable)   

    book.close()

1 个答案:

答案 0 :(得分:0)

您可以使用XlsxWriter write_column()方法将数据列表编写为列。

但是,在这种特殊情况下,问题似乎是每次通过循环的xlsxwriter.Workbook()部分时,都会通过condition_c创建一个新的重复文件。因此,使用col的最后一个值,下次循环时将覆盖整个文件。

您可能应该在循环外部移动xlsx文件的创建。可能与open()文本文件位于同一位置。