python模組:xlsxwriter和xlrd相結合讀取、寫入excel檔案
阿新 • • 發佈:2019-01-05
python模組簡單說明:
xlsxwriter:負責寫入資料
xlrd:負責讀取資料
xlsxwriter 官方文件:http://xlsxwriter.readthedocs.org
本例項是剛寫出來的,目前比較粗糙。
寫這例項主要是結合平時工作內容,把手動操作改成自動化。
平時線上更新遊戲版本號後,需要把版本號記錄到一個excel檔案中,每次更新都要修改,比較蛋疼,雖然版本號在資料庫中也有存在,但還是要往excel記錄一份。
這些程式碼目前只是測試程式碼,從原excel中讀取所有內容,然後修改,再重成新的excel(其實我程式碼中並沒有修改,只是把內容讀出來,再寫回去,唯一的就是做了些表格屬性設定吧,其實我放到運維工具上後,就會結合平臺,及資料庫,去修改要修改的資料)。
- #coding=utf-8
- #/usr/bin/env python
- import xlsxwriter,xlrd
- import sys,os.path
- fname = 'zm6.xlsx'
- if not os.path.isfile(fname):
- print u'檔案路徑不存在'
- sys.exit()
- data = xlrd.open_workbook(fname) # 開啟fname檔案
- data.sheet_names() # 獲取xls檔案中所有sheet的名稱
-
table = data.sheet_by_index(0) # 通過索引獲取xls檔案第0個sheet
- nrows = table.nrows # 獲取table工作表總行數
- ncols = table.ncols # 獲取table工作表總列數
- workbook = xlsxwriter.Workbook('zm6.xlsx') #建立一個excel檔案
- worksheet = workbook.add_worksheet() #建立一個工作表物件
- worksheet.set_column(0,ncols,22) #設定列的寬度為22畫素
-
#border:邊框,align:對齊方式,bg_color:背景顏色,font_size:字型大小,bold:字型加粗
- top = workbook.add_format({'border':1,'align':'center','bg_color':'cccccc','font_size':13,'bold':True})
- green = workbook.add_format({'border':1,'align':'center','bg_color':'green','font_size':12})
- yellow = workbook.add_format({'border':1,'bg_color':'yellow','font_size':12})
- red = workbook.add_format({'border':1,'align':'center','bg_color':'red','font_size':12})
- blank = workbook.add_format({'border':1})
- for i in xrange(nrows):
- worksheet.set_row(i,22) #設定第i行單元格屬性,高度為22畫素,行索引從0開始
- for j in xrange(ncols):
- cell_value = table.cell_value(i,j,) #獲取第i行中第j列的值
- if i == 0:
- format = top
- elif i == 3 or i == 6:
- format = blank
- else:
- if j == 0 or j == 2:
- format = yellow
- elif j == 1:
- format = red
- elif j == 3:
- format = green
- green.set_num_format('yyyy-mm-dd') #設定時間格式
- worksheet.write(i,j,cell_value,format) #把獲取到的值寫入檔案對應的行列
- format.set_align('vcenter') #設定單元格垂直對齊
- workbook.close()
看完程式碼,再來看我修改之前,即原始的excel檔案內容:
讀取內容後,新生成的excel檔案內容:
這些程式碼格式屬性,是因為我特意根據原來的檔案格式制定的,所以在程式碼中,能看到好幾個if語句。
正因為這樣,看到的前後圖對比,很相像。