簡體   English   中英

如何避免使用python覆蓋excel中的單元格?

[英]How to avoid overwriting of cell in excel using 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表之前打印數據,但它沒有顯示任何錯誤,也沒有重復記錄。

任何人都可以指導我出錯的地方......

歡迎任何形式的指導/幫助。

先感謝您 :)

代碼示例存在一些問題:

  • 為內循環的每次迭代重寫頭。 這部分代碼應該在循環之外。
  • for a in student_result循環中未使用。
  • row_numcol_num變量遞增但未使用。
  • 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,但是您沒有在write語句中使用它們。 怎么樣:

   sheet.write(rownum,colnum,col)

你也許不想在col for循環中推進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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM