每次搞考勤都要弄很久很久,一直想着搞一个代码出来,一直拖一直拖一直拖,直到这次忍不了了,结果用的时间都可以搞两次考勤了,而且因为手残还把代码搞没了,重写了一次==
都是泪,所以一定要记下来
python操作excel用到了3个包,读数据(只能读不能写)import xlrd,写数据(只能写入一个新的文件不能读)import xlwt,因为需要读写同一个文件,所以参考了网上的方法,用到了from xlutils.copy import copy,通过只读的方式打开,然后用copy方法操作,这里是原文的链接。
小程序还用到了:修改单元格背景色,识别单元格背景色,合并单元格几个操作
0、excel之外,还学了一招,在命令行输出中文:
print(repr(['迟到的夹心饼干']).decode('string-escape'))
1、读写同一个表格的曲线救国方法:
rb = xlrd.open_workbook(filename) #打开file
table = rb.sheet_by_index(0) # xlrd中的方法
value = table.cell(1,2).value.encode('utf-8') #读取文件内容,有中文时用utf-8编码
wb = copy(rb) # 用到xlutils的copy
#通过get_sheet()获取的sheet有write()方法
ws = wb.get_sheet(0) #1代表是写到第几个工作表里,从0开始算是第一个。
ws.write(x, y, 'changed!') #写入同一个文件
wb.save(filename) #保存相当于关文件
我试过用xlrd和xlwt同时打开一个文件,结果是悲剧的,write会覆盖源文件的所有,就好像是在源文件上贴了一张白纸==
2、修改单元格背景色:
通过写入时设置样式来改变单元格背景色,很奇特的是excel的颜色是数字表示的,不是RGB,是单纯的数字,也是用的网上的例子,原文在这里。
file=xlwt.Workbook() #xlwt新建文件的方法
table=file.add_sheet('sheet name',cell_overwrite_ok=True) #这个True要打开,没试过不打开啥样
for i in range(0,256):
stylei= xlwt.XFStyle() #初始化样式
patterni= xlwt.Pattern() #为样式创建图案
patterni.pattern=1 #设置底纹的图案索引,1为实心,2为50%灰色,对 应为excel文件单元格格式中填充中的图案样式
patterni.pattern_fore_colour=i #设置底纹的前景色,对应为excel文件单元格格式 中填充中的背景色
#patterni.pattern_back_colour=35 #设置底纹的背景色,对应为excel文件单元格格式 中填充中的图案颜色
stylei.pattern=patterni #为样式设置图案
table.write(i,0,i,stylei) #使用样式
file.save('colour.xls')
这一小段代码就把颜色和对应的数字给找出来了,赞。
3、识别单元格背景颜色
也是用的网上的例子,网络真是个好东西^_^,原文在这里 。
book = xlrd.open_workbook("colour.xls", formatting_info=1) #这个formatting要打开,不然操作过后之前设置的颜色就全没了,别问我为什么知道
sheet = book.sheet_by_index(0)
xfx = sheet.cell_xf_index(row, col)
xf = book.xf_list[xfx]
bgx = xf.background.pattern_colour_index # 这一步取出来的bgx就是表示背景颜色的数字
4、合并单元格
这个最简单了
sheet.write_merge(row_begin,row_end,col_begin,col_end,value)
#这个参数是我试出来的==,因为网上的代码没有注释,试完了想起来好像可以去找官方文档读一读。。。