創意風暴Python+Excel,實用辦公小技巧

學python能幹嘛?專業回答:想幹嘛就幹嘛。對於任何工具的使用都在於掌握者怎麼去開發,能夠解決現實生活中的問題和提高我們的工作能力才工具使用目的。

創意風暴Python+Excel,實用辦公小技巧

最近在用Excel做一些活動分析報表,但是做著做著發現python也有數據處理功能,於是就想著寫個小工具幫著處理。於是我試著用Python來處理Excel表格,發現效果不錯,因此在這裡總結一下經驗和解決操作中遇到的問題。

用python讀寫Excel

python操作excel主要用到xlrd和xlwt這兩個庫,xlwt是寫excel、xlrd是讀excel的庫。下載網站https://pypi.python.org/pypi。下面有python讀和寫excel。

1.Python寫excel——xlwt

Python寫excel的重點不在構造一個workbook的本身,而是填充數據,不過這不在分享內。在寫excel的操作中也有棘手的問題,比如合併單元格就比較麻煩,另外就是風格樣式。

詳細代碼如下:

結果圖

創意風暴Python+Excel,實用辦公小技巧

這裡,對write_merge()的用法解釋一下,如上述:sheet1.write_merge(1,2,3,3,'打遊戲'),即在四列合併第2,3列,合併後的單元格內容為"合計",並設置了fengge。其中,裡面所有的參數都是以0開始計算的。

2.Python讀excel——xlrd

Python讀取Excel表格,相比xlwt來說,xlrd提供的接口比較多,有些操作比較麻煩,比如讀取日期,合併單元格。

創意風暴Python+Excel,實用辦公小技巧

整體思路為:打開文件→選定表格→讀取行列內容→讀取表格數據

詳細代碼如下:

import xlrd

from datetime import date,datetime

file = 'test3.xlsx'

def read_excel():

wb = xlrd.open_workbook(filename=file)#打開文件

print(wb.sheet_names())#獲取所有表格名字

sheet1 = wb.sheet_by_index(0)#通過索引獲取表格

sheet2 = wb.sheet_by_name('年級')#通過名字獲取表格

print(sheet1,sheet2)

print(sheet1.name,sheet1.nrows,sheet1.ncols)

rows = sheet1.row_values(2)#獲取行內容

cols = sheet1.col_values(3)#獲取列內容

print(rows)

print(cols)

print(sheet1.cell(1,0).value)#獲取表格裡的內容,三種方式

print(sheet1.cell_value(1,0))

print(sheet1.row(1)[0].value)

運行結果如下:

創意風暴Python+Excel,實用辦公小技巧

這裡還存在問題,上面運行的結果應該是出身日期,可顯示卻是浮點數;還是合併單元格應該是有內容的。

那接下來我們一一攻取這兩個問題:

⑴.python讀取excel中單元格內容為日期的方式

python讀取excel中單元格的內容返回的有5種類型,即上面例子中的ctype:

ctype : 0 empty,1 string,2 number, 3 date,4 boolean,5 error

即date的ctype=3,這時需要使用xlrd的xldate_as_tuple來處理為date格式,先判斷表格的ctype=3時xldate才能開始操作。

詳細代碼如下:

import xlrd

from datetime import date,datetime

print(sheet1.cell(1,2).ctype)

date_value = xlrd.xldate_as_tuple(sheet1.cell_value(1,2),wb.datemode)

print(date_value)

print(date(*date_value[:3]))

print(date(*date_value[:3]).strftime('%Y/%m/%d'))

創意風暴Python+Excel,實用辦公小技巧

⑵.獲取合併單元格的內容

在操作之前,先介紹一下merged_cells()用法,merged_cells返回的這四個參數的含義是:(row,row_range,col,col_range),其中[row,row_range)包括row,不包括row_range,col也是一樣,即(1, 3, 4, 5)的含義是:第1到2行(不包括3)合併,(7, 8, 2, 5)的含義是:第2到4列合併。

詳細代碼如下:

merge = []

print(sheet1.merged_cells)

for (rlow,rhigh,clow,chigh) in sheet1.merged_cells:

merge.append([rlow,clow])

for index in merge:

print(sheet1.cell_value(index[0],index[1]))

運行結果跟上圖一樣,如下:

創意風暴Python+Excel,實用辦公小技巧

Python讀寫Excel表格,就是這麼簡單粗暴又好用,如果覺得不錯,對你工作中有幫助,動動手指分享給更多人哦。


分享到:


相關文章: