• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

Python模块:xlwt、xlrd、openpyxl

Python模块 彭东稳 6年前 (2018-03-26) 23302次浏览 已收录 0个评论

一、xlwt写excel

xlwt是一个用于向旧的Excel文件写入数据和格式化信息的库,旧的Excel即后缀为.xls(2007版本之前的Office),新的后缀为.xlsx(2007版本及之后的Office)。xlwt、wlrd只能读写xls文件,而不能操作xlsx文件。旧的Excel一个工作表最多可有65536行,行用数字1—65536表示,最多可有256列,列用英文字母A—Z,AA—AZ,BA—BZ,……,IA—IV表示;一个工作簿中最多含有255个工作表,默认情况下是三个工作表。

对于新版本的Office最大行数已经支持到了1048576,最大列数是16384。当然也有新的Python库来对新的Office Excel进行操作,就是openpyxl库,下面也会简单使用一下。

先看xlwt库,在写入Excel表格之前,你必须初始化workbook对象,然后添加一个workbook对象。比如:

这样表单就被创建了,然后就可以写入数据:

这里第一个参数0表示Excel的行,第二个参数0表示Excel的列,第三个参数就是写入到此单元格的内容。

当你更改表单内容的时候,会有警告提示。解决方式就是使用cell_overwrite_ok=True来创建worksheet。

这样就可以更改单元格的内容了。

然后就可以保存文件(这里不需要像打开文件一样需要close文件)

除了上面这些基本操作外,也支持格式化设置。如单元格格式属性或单元格样式的属性设置,字体设置等,格式属性分为6组:

Group Attributes
Number format 数字格式索引(FORMAT记录的索引)
Font 字体索引(FONT记录的索引)
Alignment 水平和垂直对齐,文本换行,缩进,方向/旋转,文本方向
Border 边框线条样式和颜色
Background 背景区域风格和颜色
Protection 单元格锁定,公式隐藏

使用方式:

还有比如格式化数字,添加超链接等,更多可以参考官方样例: https://github.com/python-excel/xlwt/tree/master/examples

从MySQL中读出数据,然后批量插入Excel表格中。

二、xlrd读excel

上面介绍了写Excel的库,有写自然就有读的库了,就是xlrd,使用起来跟xlwd差不多。

首先,打开workbook:

得到表的sheet名称:

得到第一个sheet名称,两种方式:索引和名字

递归打印出每行的信息(列表):

如果只想返回第一列数据:

通过索引读取数据:

注意:这里的索引都是从0开始的,根据行和列的坐标读取具体的Excel单元格。

三、openpyxl操作excel

其实上面的xlwt或xlrd都是相对限制较多,比如无法修改excel表格,以及读写一个sheet不能超过65535条,如果超过就会报错:ValueError: row index was 65536, not allowed by .xls format。这也是因为xlwt或xlrd只能用于后缀为.xls老版本的Excel,也是Excel本身的限制。上面也说了,新版Excel已经支持更大的行数了。

openpyxl库就是用来操作新版的Excel,相对xlwt和xlrd也更加友好。在openpyxl中,主要用到三个概念:Workbooks,Sheets,Cells。Workbook就是一个excel工作表;Sheet是工作表中的一张表页;Cell就是简单的一个格。openpyxl就是围绕着这三个概念进行的,不管读写都是“三板斧”:打开Workbook,定位Sheet,操作Cell。

关于openpyxl更为详细的使用可以看这篇文章“OpenPyXL的使用教程(一)”。

在使用上与xlwt/xlrt不同的是,xlwt/xlrt可以Excel行和列的坐标(0,0)来定位Cell,而openpyxl使用类似A1-Z1这样的方式来定位Cell。其实在处理起来使用A1-Z1这种方式定位Cell不是很方便,但列数大于A-Z后,就要从AA-AZ开始算起。我这里提供了一个生成定位Cell的字母列表的方法。

只需要传入一个数字即可,数字就是你要生成的字母数量,默认最大生成65535,你也可以自己限制。

下面提供了一个从数据库读取数据然后循序插入到Excel中的例子:

上面是一个一次性导出 Excel 的脚本,如果有多次查询追加导入到 Excel 中,大概的方式如下:

这是一个从文件中读取数据,然后进行查询,查询结果追加到 Excel 中,没有查询结果的把文件读取的数值追加进 Excel 中。

四、xlutils修改excel

Python中一般使用xlrd(excel read)来读取Excel文件,使用xlwt(excel write)来生成Excel文件(可以控制Excel中单元格的格式),需要注意的是,用xlrd读取excel是不能对其进行操作的:xlrd.open_workbook()方法返回xlrd.Book类型,是只读的,不能对其进行操作。而 xlwt.Workbook()返回的xlwt.Workbook类型的save(filepath)方法可以保存excel文件。因此对于读取和生成Excel文件都非常容易处理,但是对于已经存在的Excel文件进行修改就比较麻烦了。不过,还有一个xlutils(依赖于xlrd和xlwt)提供复制excel文件内容和修改文件的功能。其实际也只是在xlrd.Book和xlwt.Workbook之间建立了一个管道而已。如果有用到可以参考:Python xlrd、xlwt、xlutils读取、修改Excel文件


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (4)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!