如何避免在Excel中使用python覆盖单元格?
我正在使用python-2.7和xlsxwriter写入Excel表格。
以下是我的代码…
workbook = Workbook('D:\S_details.xlsx') sheet = workbook.add_worksheet() rownum = 2 colnum = 2 for a in student_result: for r, row in enumerate(student_result): for c, col in enumerate(row): bold = workbook.add_format({'bold': 1}) sheet.write('A1','Student_ID',bold) sheet.write('B1','Student_Link',bold) sheet.write('C1','Student_Name',bold) sheet.write('D1','Student_Qualification',bold) sheet.write('E1','Student_Address',bold) sheet.write('F1','Student_City',bold) sheet.write('G1','Student_State',bold) sheet.write('H1','Student_Country',bold) sheet.write('I1','Student_Stream',bold) sheet.write('J1','Student_Gender',bold) sheet.write(r,c,col) rownum = rownum + 1 colnum = colnum + 1
代码运行良好,但从数据库检索的第一个条目被每列的标题覆盖。
因此,只有第一个条目被覆盖,其余条目完全可见。
我也是在写入excel表格之前打印数据,但是没有显示任何错误,也没有重复logging。
任何人都可以请指导我去哪里错了…
欢迎任何forms的指导/帮助。
先谢谢你 :)
代码示例有几个问题:
- 内部循环的每一次迭代都会重写头文件。 这部分代码应该在循环之外。
-
for a in student_result
循环中的for a in student_result
不使用。 -
row_num
和col_num
variables递增但不使用。 -
enumerate()
返回一个0行值,它将覆盖或由报头中的A1
,B1
条目覆盖。
解决这些问题会给这样的事情:
import xlsxwriter workbook = xlsxwriter.Workbook('S_details.xlsx') sheet = workbook.add_worksheet() # Generate some sample data. student_result = [] for num in range(1, 11): student_result.append([num] * 10) # Make the columns wider so that the text is visible. sheet.set_column('A:J', 20) # Add some formatted headers. bold = workbook.add_format({'bold': 1}) sheet.write('A1','Student_ID',bold) sheet.write('B1','Student_Link',bold) sheet.write('C1','Student_Name',bold) sheet.write('D1','Student_Qualification',bold) sheet.write('E1','Student_Address',bold) sheet.write('F1','Student_City',bold) sheet.write('G1','Student_State',bold) sheet.write('H1','Student_Country',bold) sheet.write('I1','Student_Stream',bold) sheet.write('J1','Student_Gender',bold) # Write the data. for row_num, row_data in enumerate(student_result): for col_num, col_data in enumerate(row_data): sheet.write(row_num + 1, col_num, col_data) workbook.close()
你预先设置了rownum和colnum,但是你没有在写入语句中使用它们。 怎么样:
sheet.write(rownum,colnum,col)
你也可能不想在循环中将rownum提前,所以:
for a in student_result: for r, row in enumerate(student_result): for c, col in enumerate(row): bold = workbook.add_format({'bold': 1}) sheet.write('A1','Student_ID',bold) sheet.write('B1','Student_Link',bold) sheet.write('C1','Student_Name',bold) sheet.write('D1','Student_Qualification',bold) sheet.write('E1','Student_Address',bold) sheet.write('F1','Student_City',bold) sheet.write('G1','Student_State',bold) sheet.write('H1','Student_Country',bold) sheet.write('I1','Student_Stream',bold) sheet.write('J1','Student_Gender',bold) sheet.write(rownum,colnum,col) colnum = colnum + 1 rownum += 1