python写excel文件,openpyxl, xlrd, xlwt,xlutils
2013-11-02 17:40
941 查看
在上一篇写了python利用csv模块写csv文件,http://blog.csdn.net/xiaobing_blog/article/details/14056473,速度很快
但有些缺陷,所以我最后又找了写excel的工具
工具有这些:
在网站:http://www.python-excel.org/, 提供了xlrd,xlwt,xlutils一套工具,xlrd是用来读取excl的,xlwt是用来写入excel的
xlutils,引用了xlrd和xlwt来做一些如合并,过滤,修改文件的操作,这个很多人推荐使用,但有一个缺陷,就是,他的一个
工作表sheet只能写入65535行,多了就不能写了,解决方法可以是,每65535行新建一个工作表sheet或者向后移动几列,
然后写入,他的列最大值为256,所以最多一个sheet文件可以写入:256 * 65535 个数据
在网站:http://pythonhosted.org/openpyxl/,提供了工具openpyxl,我觉得这个挺好的,下面会有一个简单的例子
这是我自己写的一个简单的例子:
注:当我写完后后,换用数据库的记录写入时,报错为:ValueError("row index (%r) not
an int in range(65536)" % rowx
原因是存储这个计数器的值为16位数,最大是65535
除了这个限制外,其他的特性都挺好的,可以定制单元格颜色,等等
2.用openpyxl写入就很好了避免了上面的问题:
我的简单的例子:
这里之所以用很多数字的原因是因为之前写csv的时候,用excel打开,超过15位数,后面的自动没变位0,经过测试,这个不存在这样的错误
其中用到了一个optimized_write = True,这个是一个优化的快速写入方法
但有些缺陷,所以我最后又找了写excel的工具
工具有这些:
在网站:http://www.python-excel.org/, 提供了xlrd,xlwt,xlutils一套工具,xlrd是用来读取excl的,xlwt是用来写入excel的
xlutils,引用了xlrd和xlwt来做一些如合并,过滤,修改文件的操作,这个很多人推荐使用,但有一个缺陷,就是,他的一个
工作表sheet只能写入65535行,多了就不能写了,解决方法可以是,每65535行新建一个工作表sheet或者向后移动几列,
然后写入,他的列最大值为256,所以最多一个sheet文件可以写入:256 * 65535 个数据
在网站:http://pythonhosted.org/openpyxl/,提供了工具openpyxl,我觉得这个挺好的,下面会有一个简单的例子
这是我自己写的一个简单的例子:
#! /usr/bin/python #-*- coding:utf-8 -*- #Filename: myexcel.py #Author: xiaobing #E-mail: xiaobingzhang29@gmail.com #Date: 2013-11-02 #Description: from xlwt import Workbook,Style def getRows(): rows = [] row1 = {'a':'6876890809890890098', 'b':'中过人', 'c':''} row2 = {'a':'687235890890098', 'b':'中国人','c':'98734978329'} row3 = {'a':'68768343890098', 'b':'English', 'c':''} row4 = {'a':'34534534643653452', 'b':'American','c':'3234'} rows.append(row1) rows.append(row2) rows.append(row3) rows.append(row4) return rows def getFieldnames(): return {'a':'银行帐号', 'b':'国籍','c':'电话'} def convDict2SortedList(dictRow): listRow = [] keys = dictRow.keys() keys.sort() for key in keys: listRow.append(dictRow[key]) return listRow def write2Excel(filename, fieldnames, rows): wb = Workbook(encoding='UTF-8') ws = wb.add_sheet('表格',cell_overwrite_ok=True) #得到第0行,写入标题 row = ws.row(0) listRow = convDict2SortedList(fieldnames) for j in range(len(listRow)): row.write(j, listRow[j]) print listRow[j] #从第i行开始写 i_row = 1 for i in range(i_row, len(rows) + i_row): #得到工作表的第i行 row = ws.row(i) #将字典行转换为经过key排序的list,保证不错行 listRow = convDict2SortedList(rows[i - i_row]) #逐个单元格写入 for j in range(len(rows[i - i_row])): #如果转换为字符串后大于15的长度,是数字的话会被 #损失精度,后面转换为0,这里用文本的方式写入 if len(str(listRow[j])) > 15: row.set_cell_text(j, listRow[j]) else: row.write(j, listRow[j]) wb.save(filename) if __name__ == '__main__': filename = '/home/xiaobing/workspace/python/excel/myexcel.xls' rows = getRows() fieldnames = getFieldnames() write2Excel(filename, fieldnames, rows)
注:当我写完后后,换用数据库的记录写入时,报错为:ValueError("row index (%r) not
an int in range(65536)" % rowx
原因是存储这个计数器的值为16位数,最大是65535
除了这个限制外,其他的特性都挺好的,可以定制单元格颜色,等等
2.用openpyxl写入就很好了避免了上面的问题:
我的简单的例子:
#! /usr/bin/python #-*- coding:utf-8 -*- #Filename: optimipyxl.py #Author: xiaobing #E-mail: xiaobingzhang29@gmail.com #Date: 2013-11-02 #Description: from openpyxl import Workbook wb = Workbook(optimized_write = True) #创建一个sheet ws = wb.create_sheet() #写入10行,每行20个 for irow in xrange(10): ws.append(['984375894395748395' for i in xrange(20)]) wb.save('myExcelFile.xlsx')
这里之所以用很多数字的原因是因为之前写csv的时候,用excel打开,超过15位数,后面的自动没变位0,经过测试,这个不存在这样的错误
其中用到了一个optimized_write = True,这个是一个优化的快速写入方法
相关文章推荐
- Python 读写操作Excel —— 安装第三方库(xlrd、xlwt、xlutils、openpyxl)
- python第三方库——xlrd和xlwt操作Excel文件学习
- 使用python读写操作同一个excel(xlrd,xlwt,xlutils)
- python - 通过加载第三方库xlrd/xlwt/xlsxwriter,来读写excel文件,不涉及图形操作
- Python读取excel文件(xlrd,xlwt)
- python 6-5 如何读写excel文件 使用第三方库xlrd 和 xlwt,这两个库分别用于excel读和写
- Python操作excel的几种方式--xlrd、xlwt、openpyxl
- Python处理Excel文档(xlrd, xlwt, xlutils)
- Python中xlrd、xlwt、xlutils模块,实现在Excel读取和写入数据
- Python处理Excel文档(xlrd, xlwt, xlutils)
- Python简单读写Excel (xlwt, xlrd, xlutils)
- 使用python读写操作同一个excel(xlrd,xlwt,xlutils)
- python读写Excel文件--使用xlrd模块读取,xlwt模块写入
- python读取excel文件中所有sheet表格:openpyxl模块(二)
- xlrd---Python中读取excel文件的利器
- xlrd---Python中读取excel文件的利器
- Python xlrd、xlwt读写Excel
- python+xlrd+xlwt操作excel
- Python xlrd、xlwt、xlutils读取、修改Excel文件
- python中使用xlrd、xlwt和xlutils3操作Excel