面向python 2/3的加速excel xlsx编写库
PyExcelerate的Python项目详细描述
加速的excel xlsx python编写库
- 作者:Kevin Wang和Kevin Zhang
- 版权所有2015王凯文,张凯文。部分版权归谷歌所有, 公司
- 许可证:简化的BSD许可证
- Source repository
- PyPI page
说明
pyexcelerate是一种编写与excel兼容的xlsx电子表格的python。 文件,强调速度。
基准
| TEST_NAME | NUM_ROWS | NUM_COLS | TIME_IN_SECONDS | |-----------------------------|----------|----------|-----------------| | pyexcelerate value fastest | 1000 | 100 | 0.47 | | pyexcelerate value faster | 1000 | 100 | 0.51 | | pyexcelerate value fast | 1000 | 100 | 1.53 | | xlsxwriter value | 1000 | 100 | 0.84 | | openpyxl | 1000 | 100 | 2.74 | | pyexcelerate style cheating | 1000 | 100 | 1.23 | | pyexcelerate style fastest | 1000 | 100 | 2.40 | | pyexcelerate style faster | 1000 | 100 | 2.75 | | pyexcelerate style fast | 1000 | 100 | 6.15 | | xlsxwriter style cheating | 1000 | 100 | 1.21 | | xlsxwriter style | 1000 | 100 | 4.85 | | openpyxl | 1000 | 100 | 6.32 | * cheating refers to pregeneration of styles
安装
python 2.6、2.7、3.3、3、4和3.5支持pyexcelerate。
pip install pyexcelerate
用法
写入批量数据
最快
from pyexcelerate import Workbook data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # data is a 2D array wb = Workbook() wb.new_sheet("sheet name", data=data) wb.save("output.xlsx")
将批量数据写入范围
pyexcelerate还允许直接将数据写入范围,即 比一个单元一个单元地写要快。
最快
from pyexcelerate import Workbook wb = Workbook() ws = wb.new_sheet("test") ws.range("B2", "C3").value = [[1, 2], [3, 4]] wb.save("output.xlsx")
写入单元格数据
更快
from datetime import datetime from pyexcelerate import Workbook wb = Workbook() ws = wb.new_sheet("sheet name") ws.set_cell_value(1, 1, 15) # a number ws.set_cell_value(1, 2, 20) ws.set_cell_value(1, 3, "=SUM(A1,B1)") # a formula ws.set_cell_value(1, 4, datetime.now()) # a date wb.save("output.xlsx")
快速
from datetime import datetime from pyexcelerate import Workbook wb = Workbook() ws = wb.new_sheet("sheet name") ws[1][1].value = 15 # a number ws[1][2].value = 20 ws[1][3].value = "=SUM(A1,B1)" # a formula ws[1][4].value = datetime.now() # a date wb.save("output.xlsx")
按名称选择单元格
from pyexcelerate import Workbook wb = Workbook() ws = wb.new_sheet("sheet name") ws.cell("A1").value = 12 wb.save("output.xlsx")
合并单元格
from pyexcelerate import Workbook wb = Workbook() ws = wb.new_sheet("sheet name") ws[1][1].value = 15 ws.range("A1", "B1").merge() wb.save("output.xlsx")
造型单元
设置单元格样式会导致不可忽略的开销。它将增加 您的执行时间(如果操作不当,最多可延长10倍!)。仅样式 如果绝对必要的话。
最快
from pyexcelerate import Workbook, Color, Style, Font, Fill, Format from datetime import datetime wb = Workbook() ws = wb.new_sheet("sheet name") ws.set_cell_value(1, 1, 1) ws.set_cell_style(1, 1, Style(font=Font(bold=True))) ws.set_cell_style(1, 1, Style(font=Font(italic=True))) ws.set_cell_style(1, 1, Style(font=Font(underline=True))) ws.set_cell_style(1, 1, Style(font=Font(strikethrough=True))) ws.set_cell_style(1, 1, Style(fill=Fill(background=Color(255,0,0,0)))) ws.set_cell_value(1, 2, datetime.now()) ws.set_cell_style(1, 1, Style(format=Format('mm/dd/yy'))) wb.save("output.xlsx")
更快
from pyexcelerate import Workbook, Color from datetime import datetime wb = Workbook() ws = wb.new_sheet("sheet name") ws.set_cell_value(1, 1, 1) ws.get_cell_style(1, 1).font.bold = True ws.get_cell_style(1, 1).font.italic = True ws.get_cell_style(1, 1).font.underline = True ws.get_cell_style(1, 1).font.strikethrough = True ws.get_cell_style(1, 1).fill.background = Color(0, 255, 0, 0) ws.set_cell_value(1, 2, datetime.now()) ws.get_cell_style(1, 1).format.format = 'mm/dd/yy' wb.save("output.xlsx")
快速
from pyexcelerate import Workbook, Color from datetime import datetime wb = Workbook() ws = wb.new_sheet("sheet name") ws[1][1].value = 1 ws[1][1].style.font.bold = True ws[1][1].style.font.italic = True ws[1][1].style.font.underline = True ws[1][1].style.font.strikethrough = True ws[1][1].style.fill.background = Color(0, 255, 0, 0) ws[1][2].value = datetime.now() ws[1][2].style.format.format = 'mm/dd/yy' wb.save("output.xlsx")
注意.style.format.format的重复是由于计划 支持条件格式和其他相关功能。这个 格式化语法将来可能会改进。
造型范围
from pyexcelerate import Workbook, Color from datetime import datetime wb = Workbook() ws = wb.new_sheet("test") ws.range("A1","C3").value = 1 ws.range("A1","C1").style.font.bold = True ws.range("A2","C3").style.font.italic = True ws.range("A3","C3").style.fill.background = Color(255, 0, 0, 0) ws.range("C1","C3").style.font.strikethrough = True
设置行样式
一种更简单(更快)的方式来设计整行的样式。
最快
from pyexcelerate import Workbook, Color, Style, Fill from datetime import datetime wb = Workbook() ws = wb.new_sheet("sheet name") ws.set_row_style(1, Style(fill=Fill(background=Color(255,0,0,0)))) wb.save("output.xlsx")
更快
from pyexcelerate import Workbook, Color from datetime import datetime wb = Workbook() ws = wb.new_sheet("sheet name") ws.get_row_style(1).fill.background = Color(255, 0, 0) wb.save("output.xlsx")
快速
from pyexcelerate import Workbook, Color from datetime import datetime wb = Workbook() ws = wb.new_sheet("sheet name") ws[1].style.fill.background = Color(255, 0, 0) wb.save("output.xlsx")
设置柱样式
最快
from pyexcelerate import Workbook, Color, Style, Fill from datetime import datetime wb = Workbook() ws = wb.new_sheet("sheet name") ws.set_col_style(1, Style(fill=Fill(background=Color(255,0,0,0)))) wb.save("output.xlsx")
可用的样式属性
与上面的实现模式一致,下面的样式 参数可用:
ws[1][1].style.font.bold = True ws[1][1].style.font.italic = True ws[1][1].style.font.underline = True ws[1][1].style.font.strikethrough = True ws[1][1].style.font.color = Color(255, 0, 255) ws[1][1].style.fill.background = Color(0, 255, 0) ws[1][1].style.alignment.vertical = 'top' ws[1][1].style.alignment.horizontal = 'right' ws[1][1].style.alignment.rotation = 90 ws[1][1].style.alignment.wrap_text = True ws[1][1].style.borders.top.color = Color(255, 0, 0) ws[1][1].style.borders.right.style = '-.'
每个属性还具有用于通过 set_cell_style()。
下列边框样式可用:.-,..-,--, ..,=,.,medium -.,medium -..,medium --, /-.,_
设置行高和列宽
行高和列宽是使用中的size属性设置的 Style。适当的值是:*-1用于自动调整*0用于 隐藏*适当大小的任何其他值。
例如,要隐藏B列:
from pyexcelerate import Workbook, Color, Style, Fill from datetime import datetime wb = Workbook() ws = wb.new_sheet("sheet name") ws.set_col_style(2, Style(size=0)) wb.save("output.xlsx")
链接样式
pyexcelerate支持使用样式对象,而不是手动设置每个 属性也是。这允许您以后修改样式。
from pyexcelerate import Workbook, Font wb = Workbook() ws = wb.new_sheet("sheet name") ws[1][1].value = 1 font = Font(bold=True, italic=True, underline=True, strikethrough=True) ws[1][1].style.font = font wb.save("output.xlsx")
使用pyinstaller打包
pyinstaller是pyexcelerate官方支持的唯一打包程序。 将hook-pyexcelerate.writer.py复制到pyinstaller hooks目录。
支架
请使用github问题跟踪器和pull请求系统报告 错误/问题和提交改进/更改。拉 请求*必须*基于dev分支-如果不是,我们将拒绝pr 并要求您对正确的分支重新定位。所有非平凡的 对代码的更改应在适当时伴随测试。我们用 鼻子测试框架。
推荐PyPI第三方库
- 热门话题
- java如何从活动中刷新片段,然后返回片段 java如何按获取列排序? java可以使用访问者模式来执行一般的双重分派吗? 如何从C++调用java方法 编译时java非法启动类型错误 shell通过Java程序使用Haskell的GHCI 如何使用ffmpeg在java程序中获取视频的持续时间? 比较java中的arraylist对象 java阻止Eclipse/Maven调用一个特定插件 java改进列表列表? 使用Java查找SFTP最旧文件的文件大小和上次修改 上下文中SQLite DB的java相对路径。xml Java:何时使用检查的异常、未检查的异常或断言 如何在Java中使用递归生成负斐波那契序列? java在画布中绘制,并将其保存到更大的图像中