1. 程式人生 > >python模組:xlsxwriter和xlrd相結合讀取、寫入excel檔案

python模組:xlsxwriter和xlrd相結合讀取、寫入excel檔案

python模組簡單說明:

xlsxwriter:負責寫入資料

xlrd:負責讀取資料

xlsxwriter 官方文件:http://xlsxwriter.readthedocs.org

本例項是剛寫出來的,目前比較粗糙。

寫這例項主要是結合平時工作內容,把手動操作改成自動化。

平時線上更新遊戲版本號後,需要把版本號記錄到一個excel檔案中,每次更新都要修改,比較蛋疼,雖然版本號在資料庫中也有存在,但還是要往excel記錄一份。

這些程式碼目前只是測試程式碼,從原excel中讀取所有內容,然後修改,再重成新的excel(其實我程式碼中並沒有修改,只是把內容讀出來,再寫回去,唯一的就是做了些表格屬性設定吧,其實我放到運維工具上後,就會結合平臺,及資料庫,去修改要修改的資料)。

  1. #coding=utf-8
  2. #/usr/bin/env python
  3. import xlsxwriter,xlrd
  4. import sys,os.path
  5. fname = 'zm6.xlsx'
  6. if not os.path.isfile(fname):
  7.     print u'檔案路徑不存在'
  8.     sys.exit()
  9. data = xlrd.open_workbook(fname)            # 開啟fname檔案
  10. data.sheet_names()                          # 獲取xls檔案中所有sheet的名稱
  11. table = data.sheet_by_index(0)              # 通過索引獲取xls檔案第0個sheet
  12. nrows = table.nrows                         # 獲取table工作表總行數
  13. ncols = table.ncols                         # 獲取table工作表總列數
  14. workbook = xlsxwriter.Workbook('zm6.xlsx')  #建立一個excel檔案
  15. worksheet = workbook.add_worksheet()        #建立一個工作表物件
  16. worksheet.set_column(0,ncols,22)            #設定列的寬度為22畫素
  17. #border:邊框,align:對齊方式,bg_color:背景顏色,font_size:字型大小,bold:字型加粗
  18. top = workbook.add_format({'border':1,'align':'center','bg_color':'cccccc','font_size':13,'bold':True})
  19. green = workbook.add_format({'border':1,'align':'center','bg_color':'green','font_size':12})
  20. yellow = workbook.add_format({'border':1,'bg_color':'yellow','font_size':12})
  21. red = workbook.add_format({'border':1,'align':'center','bg_color':'red','font_size':12})
  22. blank = workbook.add_format({'border':1})
  23. for i in xrange(nrows):
  24.     worksheet.set_row(i,22)                 #設定第i行單元格屬性,高度為22畫素,行索引從0開始
  25.     for j in  xrange(ncols):
  26.         cell_value = table.cell_value(i,j,) #獲取第i行中第j列的值
  27.         if i == 0:
  28.             format = top
  29.         elif i == 3 or i == 6:
  30.             format = blank
  31.         else:
  32.             if j == 0 or j == 2:
  33.                 format = yellow
  34.             elif j == 1:
  35.                 format = red
  36.             elif j == 3:
  37.                 format = green
  38.                 green.set_num_format('yyyy-mm-dd')  #設定時間格式
  39.         worksheet.write(i,j,cell_value,format)      #把獲取到的值寫入檔案對應的行列
  40.         format.set_align('vcenter')                 #設定單元格垂直對齊
  41. workbook.close()

看完程式碼,再來看我修改之前,即原始的excel檔案內容:

python xlsxwriter修改之前

python xlsxwriter修改之前

讀取內容後,新生成的excel檔案內容:

python xlsxwriter修改之後

python xlsxwriter修改之後

這些程式碼格式屬性,是因為我特意根據原來的檔案格式制定的,所以在程式碼中,能看到好幾個if語句。

正因為這樣,看到的前後圖對比,很相像。