[python]操作excel

每次搞考勤都要弄很久很久,一直想著搞一個(gè)代碼出來(lái),一直拖一直拖一直拖,直到這次忍不了了,結(jié)果用的時(shí)間都可以搞兩次考勤了,而且因?yàn)槭謿堖€把代碼搞沒(méi)了,重寫了一次==

都是淚,所以一定要記下來(lái)

python操作excel用到了3個(gè)包,讀數(shù)據(jù)(只能讀不能寫)import xlrd,寫數(shù)據(jù)(只能寫入一個(gè)新的文件不能讀)import xlwt,因?yàn)樾枰x寫同一個(gè)文件,所以參考了網(wǎng)上的方法,用到了from xlutils.copy import copy,通過(guò)只讀的方式打開,然后用copy方法操作,這里是原文的鏈接

小程序還用到了:修改單元格背景色,識(shí)別單元格背景色,合并單元格幾個(gè)操作

0、excel之外,還學(xué)了一招,在命令行輸出中文:

print(repr(['遲到的夾心餅干']).decode('string-escape'))

1、讀寫同一個(gè)表格的曲線救國(guó)方法:

rb = xlrd.open_workbook(filename) ?#打開file

table = rb.sheet_by_index(0) # xlrd中的方法

value = table.cell(1,2).value.encode('utf-8') #讀取文件內(nèi)容,有中文時(shí)用utf-8編碼

wb = copy(rb) # 用到xlutils的copy

#通過(guò)get_sheet()獲取的sheet有write()方法

ws = wb.get_sheet(0)? #1代表是寫到第幾個(gè)工作表里,從0開始算是第一個(gè)。

ws.write(x, y, 'changed!') #寫入同一個(gè)文件

wb.save(filename) #保存相當(dāng)于關(guān)文件

我試過(guò)用xlrd和xlwt同時(shí)打開一個(gè)文件,結(jié)果是悲劇的,write會(huì)覆蓋源文件的所有,就好像是在源文件上貼了一張白紙==

2、修改單元格背景色:

通過(guò)寫入時(shí)設(shè)置樣式來(lái)改變單元格背景色,很奇特的是excel的顏色是數(shù)字表示的,不是RGB,是單純的數(shù)字,也是用的網(wǎng)上的例子,原文在這里

file=xlwt.Workbook() #xlwt新建文件的方法

table=file.add_sheet('sheet name',cell_overwrite_ok=True) #這個(gè)True要打開,沒(méi)試過(guò)不打開啥樣

for i in range(0,256):

stylei= xlwt.XFStyle()? ? ? ? ? ? #初始化樣式

patterni= xlwt.Pattern()? ? ? ? ? #為樣式創(chuàng)建圖案

patterni.pattern=1? ? ? ? ? ? ? ? #設(shè)置底紋的圖案索引,1為實(shí)心,2為50%灰色,對(duì)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 應(yīng)為excel文件單元格格式中填充中的圖案樣式

patterni.pattern_fore_colour=i? ? #設(shè)置底紋的前景色,對(duì)應(yīng)為excel文件單元格格式? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 中填充中的背景色

#patterni.pattern_back_colour=35? #設(shè)置底紋的背景色,對(duì)應(yīng)為excel文件單元格格式? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 中填充中的圖案顏色

stylei.pattern=patterni? ? ? ? ? #為樣式設(shè)置圖案

table.write(i,0,i,stylei)? ? ? ? #使用樣式

file.save('colour.xls')

這一小段代碼就把顏色和對(duì)應(yīng)的數(shù)字給找出來(lái)了,贊。

3、識(shí)別單元格背景顏色

也是用的網(wǎng)上的例子,網(wǎng)絡(luò)真是個(gè)好東西^_^,原文在這里?。

book = xlrd.open_workbook("colour.xls", formatting_info=1) #這個(gè)formatting要打開,不然操作過(guò)后之前設(shè)置的顏色就全沒(méi)了,別問(wèn)我為什么知道

sheet = book.sheet_by_index(0)

xfx = sheet.cell_xf_index(row, col)

xf = book.xf_list[xfx]?

bgx = xf.background.pattern_colour_index # 這一步取出來(lái)的bgx就是表示背景顏色的數(shù)字

4、合并單元格

這個(gè)最簡(jiǎn)單了

sheet.write_merge(row_begin,row_end,col_begin,col_end,value)

#這個(gè)參數(shù)是我試出來(lái)的==,因?yàn)榫W(wǎng)上的代碼沒(méi)有注釋,試完了想起來(lái)好像可以去找官方文檔讀一讀。。。

全部代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容