Python Excel从第2列开始从csv写入值

时间:2012-02-24 14:08:25

标签: python excel xlwt

我正在使用XLWT从.csv编写excel文件,我将csv中的第一列作为行的样式。如何开始编写从每行第二列开始的值(以便不打印出值,例如“headerStyle”)?我尝试了几种不同的方法,例如创建col_count但没有运气。

row_count = 0
style = rowStyle

#Read each row and write to sheet
for row in csv_input:
        #Iterate through each column
        for col in range(len(row)):
            if col == 0:
                style = row[col]
            else:
                if(is_number(row[col]) == True):
                    sheet.write(row_count,col,float(row[col]),style)
                else:
                    sheet.write(row_count,col,row[col],style)

        #Increment row_count
        row_count += 1

任何帮助表示赞赏!谢谢!

我最终搞清楚了。对于任何感兴趣的人来说,一个问题是样式作为字符串返回,所以我创建了一个函数来修复它:

def assign_style(string):
    if string=='headerStyle':
        style = headerStyle
        return style

然后,在跳过第一列时,以下内容会循环播放:

    row_count = 0

#Read each row and write to sheet
for row in csv_input:
        #Iterate through each column
        for col in range(len(row)):
            if col == 0:
                style = assign_style(row[col])
            elif(is_number(row[col]) == True):
                sheet.write(row_count,col-1,float(row[col]),style)
            else:
                sheet.write(row_count,col-1,row[col],style)      
        #Increment row_count
        row_count += 1

1 个答案:

答案 0 :(得分:0)

使用iter()。另外,不要迭代range()。而是使用enumerate()。并使用三元运算符,它有助于维持DRY:

for row_count, row in enumerate(csv_input):
    columns = iter(row)
    style = next(columns)
    for col_count, col in enumerate(columns, start=1):
        sheet.write(
            row_count,
            col_count,
            float(col) if is_number(col) else col,
            style
        )