每次搞考勤都要弄很久很久跷跪,一直想著搞一個(gè)代碼出來(lái),一直拖一直拖一直拖齐板,直到這次忍不了了吵瞻,結(jié)果用的時(shí)間都可以搞兩次考勤了,而且因?yàn)槭謿堖€把代碼搞沒(méi)了覆积,重寫(xiě)了一次==
都是淚听皿,所以一定要記下來(lái)
python操作excel用到了3個(gè)包熟呛,讀數(shù)據(jù)(只能讀不能寫(xiě))import xlrd宽档,寫(xiě)數(shù)據(jù)(只能寫(xiě)入一個(gè)新的文件不能讀)import xlwt,因?yàn)樾枰x寫(xiě)同一個(gè)文件庵朝,所以參考了網(wǎng)上的方法吗冤,用到了from xlutils.copy import copy,通過(guò)只讀的方式打開(kāi)九府,然后用copy方法操作椎瘟,這里是原文的鏈接。
小程序還用到了:修改單元格背景色侄旬,識(shí)別單元格背景色肺蔚,合并單元格幾個(gè)操作
0、excel之外儡羔,還學(xué)了一招宣羊,在命令行輸出中文:
print(repr(['遲到的夾心餅干']).decode('string-escape'))
1璧诵、讀寫(xiě)同一個(gè)表格的曲線(xiàn)救國(guó)方法:
rb = xlrd.open_workbook(filename) ?#打開(kāi)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代表是寫(xiě)到第幾個(gè)工作表里仇冯,從0開(kāi)始算是第一個(gè)之宿。
ws.write(x, y, 'changed!') #寫(xiě)入同一個(gè)文件
wb.save(filename) #保存相當(dāng)于關(guān)文件
我試過(guò)用xlrd和xlwt同時(shí)打開(kāi)一個(gè)文件,結(jié)果是悲劇的苛坚,write會(huì)覆蓋源文件的所有比被,就好像是在源文件上貼了一張白紙==
2、修改單元格背景色:
通過(guò)寫(xiě)入時(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要打開(kāi)涯贞,沒(méi)試過(guò)不打開(kāi)啥樣
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要打開(kāi)吩坝,不然操作過(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)有注釋?zhuān)囃炅讼肫饋?lái)好像可以去找官方文檔讀一讀弧呐。。嵌纲。