如何避免在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_numcol_numvariables递增但不使用。
  • enumerate()返回一个0行值,它将覆盖或由报头中的A1B1条目覆盖。

解决这些问题会给这样的事情:

 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