用python搞定excel文件:xlrd、xlwt模塊

用python搞定excel文件:xlrd、xlwt模塊

來自專欄 Python程序員11 人贊了文章

介紹採用xlrd模塊讀取excel文件、採用xlwt模塊寫入excel文件的基本技巧。

python已有幾個模塊可處理word文檔、excel表格、以及ppt演示文稿。首先,匯總列出各模塊對不同版本文件的處理能力:

docx模塊:可讀取、寫入.docx文檔(不支持.doc文檔!!!

xlrd模塊:可讀取.xls、.xlsx表格

xlwt模塊:可寫入.xls表格(不可寫入.xlsx文件!!!

pptx模塊:可讀取.pptx,可寫入.ppt、.pptx(.ppt演示文稿,只能讀取pptx模塊自身輸出的,對其他方式生成的不支持!!!

首先介紹xlrd、xlwt模塊中如何描述excel表格。

兩個模塊對excel表格的結構定義都非常直觀,和平時使用excel表格的習慣基本一致。

總體分為三個級別:工作簿——工作表——單元格

一個excel表格就是一個工作簿。

一個工作簿可包含多個工作表,工作表可通過索引或名字訪問。

一個工作表包含多行、多列,行列交叉位置的基本單元就是單元格,內容都寫入在單元格中。單元格可通過行、列索引訪問。

另外,可對單元格內容的格式進行設置,包括類型(日期等)、字體、顏色等。

下面介紹xlrd模塊讀取excel表格。

打開表格(工作簿):

wb = xlrd.open_workbook(1.xls) #打開excel表格1.xls

讀取工作表:

wb.sheets() #返回工作表(sheet)實例構成的list,可通過索引讀取工作表

或 ws = wb.sheet_by_name(xxx) #通過名字打開工作簿

或 ws = wb.sheet_by_index(i) #通過編號(索引,從0開始)打開工作表

讀取單元格內容:

注意xlrd讀取excel工作簿的行、列索引都是從0開始。

row = ws.row_values(i, ca, cb) #讀取第i行中[ca, cb)列內容,返回list。注意不含第cb列

或 col = ws.col_values(i, ra, rb) #讀取第i列中[ra, rb)行內容,返回list。注意不含第rb行

或 cell= ws.cell_value(r, c) #讀取第i行第j列單元格內容

單元格數據格式轉換:

cell = xlrd.xldate_as_datetime(cell,0) #對excel的日期格式單元格,xlrd讀入的是浮點數,可通過xldate_as_datetime()轉為datetime.datetime日期格式實例。

或 cell = xlrd.xldate_as_tuple(cell,0) #轉為日期tuple(year,month,day,hour,min,second),注意1≤cell≤60時,xldate_as_tuple()報錯XLDateAmbiguous,也即1900-3-1之前的日期無法轉為tuple。

下面介紹xlwt模塊寫入excel表格。

新建表格(工作簿):

wb = xlwt.Workbook() #新建一個空的表格,用於寫入

新建工作表:

ws = wb.add_sheet(Sheet1) #在表格中建立Sheet1工作表

寫入單元格內容:

注意xlwt讀取excel工作簿的行、列索引也是從0開始。

ws.write(r, c, content, style) #在ws工作簿實例的第r行第c列單元格中寫入內容content,並按照指定數據格式style(xlwt.XFStyle實例)寫入(比如日期、字體等)

設定單元格數據格式:

mf = xlwt.XFStyle() #返回用於設定單元格格式的實例

mf.num_format_str = yyyy/mm/dd #將數字轉換為日期格式

mf.font = 宋體 #設置字體

需在ws.write()時指定style實例才能生效。

保存表格:

wb.save(1.xls) #保存以上表格實例到1.xls

注意只能寫入.xls表格,不能寫入.xlsx表格(寫入後無法打開)。

歡迎關注我的公眾號(zz-icoding),以後將逐步整理成系列化的python學習資源。

推薦閱讀:

基因可編程<BR/> 返老還童不再是幻想?
Android網路許可權問題
初學者如何上手Lede/OpenWrt?需要具備哪些基礎知識?
0基礎學Python之九:循環語句(下)

TAG:Python | 編程 | MicrosoftExcel |