我正在使用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
答案 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
)