给俺的boss写的一个小工具,使用Python对Excel进行统计,然后把结束生成一个新的Excel表格,使用到了xlrd和pyExcelerator两个库。
简单的介绍一下这两个库,先说xlrd,这个库读Excel比较方便,各种方法使用起来也挺方便:
bk = xlrd.open_workbook(‘your.xls’)
sh = bk.sheets()[-1]
上面两句就可以打开Excel表格中的一个sheet,sheets得到的是一个list,存放所有的sheet。
sh.nrows是该sheet中的行数,知道这个后就可以使用for循环来读所有的单元格了:
sh.row(i)[3]这个就代表第i行的第4列。
再看看pyExcelerator,这个用起来有点别扭:
sheets = parse_xls(‘result.xls’)
先打开一个表格,sheets是一个list,包含了所有表格的内容,每一项就是一个sheet,而每个sheet是二元tuple,第一个是该sheet的名字,第二个是一个dict,dict的key是一个二元组,表示单元格的坐标,如(0,0),第一行第一列。
从上面的分析中可以得出要访问Excel中第一个sheet的第一行第一列元素需要:
sheets[0][1][(0,0)]
pyExcelerator也不能得到行列数。
写文件也比较简单:
wb = Workbook()
ws = wb.add_sheet(‘result’)
ws.write(0,0,“hello”)
wb.save(‘result.xls’)
就不解释了:-)
写文件时需要注意直接写Unicode内容进去,而不要写编码过的内容。
给boss的代码
1 | #!/usr/bin/env python |
Comments
草儿: 靠,干嘛把地址写那么清楚啊~
刘鑫: 你比我早,嘿嘿,我正要拿Python处理Excel呢,前几天刚研究了下Excel的COM接口
Kermit.Mei: 这个很有用,我要好好学习一下,呵呵。
Amankwah: Excel格式是公开的?
wind: 看不明白,等我能看明白了再来瞅瞅
vvoody: 只用过 pyExcelerator 写过一个转课表的,还好用。 嗯,编码问题当时确实我好搞了一番。
小慧: 这个文章不错!我刚好需要了解python操作Excel的知识。 希望可以发更多关于python的帖子出来。
可可熊: To:小慧 可以看看PyFetion
9命怪猫: 其实,类似功能,用Excel内置的宏或者函数库就可以搞定了。 Excel比想象中强大得多,只是大家不愿意去发掘!
zhan: Excel内置函數是可以做到大部份的事,但置入一堆函數後,復雜度絕對超過比你自已寫出來的程式累