注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天边云E家 shaoruisky

IT博文共享,知识的海洋

 
 
 

日志

 
 

使用pyExcelerator来读写Excel文件  

2014-10-28 16:42:36|  分类: python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在发现 xlrd 之后不久就发现了 pyExcelerator ,它与 xlrd 不同,它主要是用来写 Excel 文件,当然读也是没有问题的。下面就它的使用简单地介绍一下。

一、Excel文件读取
from pyExcelerator import *
sheets = parse_xls(‘d:/a.xls’)
 
很简单,与xlrd 不同。xlrd 需要先调用book = xlrd.open_workbook(filename)打开文档,然后再调用sh = book.sheet_by_index(i)来得到第几个sheet,然后再使用sh.cell_value(i, j)得到i行j列的单元格的值。操作多了一点。而上面的parse_xls(filename)则直接返回一个列表,每一项就是一个sheet的数据。每项是一个二元组(表名,单元格数据)。其中单元格数据为一个字典,键值就是单元格的索引(i,j)。如果某个单元格无数据,那么就不存在这个值。看似简单,但从处理上不象xlrd 一样,可以知道每个sheet的最大行数和列数,然后进行循环。而使用pyExcelerator 好象没有最大行数和列数,再加上空数据又不存在,因此在处理上相对麻烦一些。这样在处理上还需要注意。它与xlrd 一样都支持unicode ,但好象没有xlrd 一样方便地判断单元格的类型的方法,感觉还是xlrd 在功能上可能要强一些。当然这只是个人感觉,再加上只是看了看例子,并没有怎么使用。
 
二、Excel文件写入
这个才是重头。那么安装好 pyExcelerator 之后,读了Readme.txt 之后了解到它的文档正在进行当中,因此想多了解如何使用它需要看它所带的例子,甚至看源程序。下面是我从例子中了解的如何写一个Excel 文档需要了解的。
 
为了方便,在导入这个模块中使用了import *的方式。
 
from pyExcelerator import *
 
首先导入模块,然后是生成工作薄。
 
w = Workbook()
 
接着是加入一个工作表(sheet)。
 
ws = w.add_sheet(‘Hey, Dude’)
 
然后就可以保存了。
 
w.save(‘mini.xls’)
 
上面的代码加在一起就是:
 
from pyExcelerator import *
 
w = Workbook()
ws = w.add_sheet(‘Hey, Dude’)
w.save(‘mini.xls’)
 
这就是最小的一个例子了,在例子中叫mini.py。你可以在例子目录下运行mini.py看一看是不是生成了一个空的Excel文件。
 
如果想加入中文很简单,改为:
 
#coding=cp936
from pyExcelerator import *
 
w = Workbook()
ws = w.add_sheet(u’这是中文’)
w.save(‘mini.xls’)
 
这样上面的执行结果是生成一个空Excel文件,但它的第一个sheet的名字为“这是中文”。就这样,只要保证你写入时使用unicode就行了。
 
空文件可以生成,那么如何插入单元格呢?
 
ws.write(i, j, value)
 
其中value为值,可以是unicode。
 
接着,我们可能想改变单元格的样式,如字体:
 
font0 = Font()
font0.name = ‘Times New Roman’
font0.struck_out = True
font0.bold = True
 
style0 = XFStyle()
style0.font = font0
 
这样我们创建了一个字体,然后又生成了一个样式。注意,真正起作用的是样式,字体不过是样式中的一种效果。
 
这样在写入单元格时带着这个样式就行了,还是使用上面的write()方法:
 
ws.write(1, 1, ‘Test’, style0)
 
这是在名为ws的sheet中的第(1,1)单元格写入了值为"Test"的内容,并且它的样式为style0。
 
然后我们还可以设置单元格的边框:
 
    borders = Borders()
    borders.left = 5
    style.borders = borders
 
上面创建了一个边框效果,设置了左边框,至于5是什么意思,我也不清楚,随便写的。然后放到样式中。上面的例子可以参考format.py程序。

  评论这张
 
阅读(176)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017