PyExcelerate
============
Accelerated Excel XLSX writing library for Python
master: |build-status-master| dev: |build-status-dev| test coverage:
|coverage-status|
- Authors: `Kevin Wang <https://github.com/kevmo314>`__ and `Kevin
Zhang <https://github.com/kz26>`__
- Copyright 2015 Kevin Wang, Kevin Zhang. Portions copyright Google,
Inc.
- License: Simplified BSD License
- `Source repository <https://github.com/kz26/PyExcelerate>`__
- `PyPI page <https://pypi.python.org/pypi/PyExcelerate>`__
Description
-----------
PyExcelerate is a Python for writing Excel-compatible XLSX spreadsheet
files, with an emphasis on speed.
Benchmarks
~~~~~~~~~~
| Benchmark code located in pyexcelerate/tests/benchmark.py
| Ubuntu 12.04 LTS, Core i5-3450, 8GB DDR3, Python 2.7.3
::
| 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
Installation
------------
PyExcelerate is supported on Python 2.6, 2.7, 3.3, 3,4, and 3.5.
::
pip install pyexcelerate
Usage
-----
Writing bulk data
~~~~~~~~~~~~~~~~~
Fastest
^^^^^^^
::
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")
Writing bulk data to a range
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PyExcelerate also permits you to write data to ranges directly, which is
faster than writing cell-by-cell.
Fastest
^^^^^^^
::
from pyexcelerate import Workbook
wb = Workbook()
ws = wb.new_sheet("test")
ws.range("B2", "C3").value = [[1, 2], [3, 4]]
wb.save("output.xlsx")
Writing cell data
~~~~~~~~~~~~~~~~~
Faster
^^^^^^
::
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")
Fast
^^^^
::
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")
Selecting cells by name
~~~~~~~~~~~~~~~~~~~~~~~
::
from pyexcelerate import Workbook
wb = Workbook()
ws = wb.new_sheet("sheet name")
ws.cell("A1").value = 12
wb.save("output.xlsx")
Merging cells
~~~~~~~~~~~~~
::
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")
Styling cells
~~~~~~~~~~~~~
Styling cells causes **non-negligible** overhead. It **will** increase
your execution time (up to 10x longer if done improperly!). Only style
cells if absolutely necessary.
Fastest
^^^^^^^
::
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")
Faster
^^^^^^
::
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")
Fast
^^^^
::
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")
**Note** that ``.style.format.format``'s repetition is due to planned
support for conditional formatting and other related features. The
formatting syntax may be improved in the future.
Styling ranges
~~~~~~~~~~~~~~
::
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
Styling rows
~~~~~~~~~~~~
A simpler (and faster) way to style an entire row.
Fastest
^^^^^^^
::
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")
Faster
^^^^^^
::
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")
Fast
^^^^
::
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")
Styling columns
~~~~~~~~~~~~~~~
Fastest
^^^^^^^
::
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")
Available style attributes
~~~~~~~~~~~~~~~~~~~~~~~~~~
Consistent with the implementation patterns above, the following style
parameters are available:
::
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 = '-.'
Each attribute also has constructors for implementing via
``set_cell_style()``.
The following border styles are available: ``.-``, ``..-``, ``--``,
``..``, ``=``, ``.``, ``medium -.``, ``medium -..``, ``medium --``,
``/-.``, ``_``
Setting row heights and column widths
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Row heights and column widths are set using the ``size`` attribute in
``Style``. Appropriate values are: \* ``-1`` for auto-fit \* ``0`` for
hidden \* Any other value for the appropriate size.
For example, to hide column 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")
Linked styles
~~~~~~~~~~~~~
PyExcelerate supports using style objects instead manually setting each
attribute as well. This permits you to modify the style at a later time.
::
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")
Hidden sheet
~~~~~~~~~~~~
PyExcelerate supports adding hidden sheets. Note that the first sheet cannot be hidden.
::
from pyexcelerate import Workbook
wb = Workbook()
ws = wb.new_sheet("visible sheet")
ws = wb.new_sheet("hidden sheet", hidden=True)
wb.save("output.xlsx")
Packaging with PyInstaller
--------------------------
PyInstaller is the only packager officially supported by PyExcelerate.
Copy hook-pyexcelerate.Writer.py to your PyInstaller hooks directory.
Support
-------
Please use the GitHub Issue Tracker and pull request system to report
bugs/issues and submit improvements/changes, respectively. **Pull
requests *must* be based against the dev branch - if not, we will reject the PR
and ask you to rebase against the correct branch.** All nontrivial
changes to code should be accompanied by a test when appropriate. We use
the Nose testing framework.
.. |build-status-master| image:: https://travis-ci.org/kz26/PyExcelerate.png?branch=master
:target: https://travis-ci.org/kz26/PyExcelerate
.. |build-status-dev| image:: https://travis-ci.org/kz26/PyExcelerate.png?branch=dev
:target: https://travis-ci.org/kz26/PyExcelerate
.. |coverage-status| image:: https://coveralls.io/repos/kz26/PyExcelerate/badge.png
:target: https://coveralls.io/r/kz26/PyExcelerate
Raw data
{
"_id": null,
"home_page": "https://github.com/kz26/PyExcelerate",
"name": "PyExcelerate",
"maintainer": "Kevin Zhang",
"docs_url": null,
"requires_python": null,
"maintainer_email": "kevin+pyexcelerate@kevinzhang.me",
"keywords": null,
"author": "Kevin Wang, Kevin Zhang",
"author_email": "kevin+pyexcelerate@kevinzhang.me",
"download_url": "https://files.pythonhosted.org/packages/52/fb/1575032802af4aff5b9cc36cab3b5dd89793f4a88d02476a602f09d31d0e/pyexcelerate-0.12.0.tar.gz",
"platform": null,
"description": "PyExcelerate\n============\n\nAccelerated Excel XLSX writing library for Python\n\nmaster: |build-status-master| dev: |build-status-dev| test coverage:\n|coverage-status|\n\n- Authors: `Kevin Wang <https://github.com/kevmo314>`__ and `Kevin\n Zhang <https://github.com/kz26>`__\n- Copyright 2015 Kevin Wang, Kevin Zhang. Portions copyright Google,\n Inc.\n- License: Simplified BSD License\n- `Source repository <https://github.com/kz26/PyExcelerate>`__\n- `PyPI page <https://pypi.python.org/pypi/PyExcelerate>`__\n\nDescription\n-----------\n\nPyExcelerate is a Python for writing Excel-compatible XLSX spreadsheet\nfiles, with an emphasis on speed.\n\nBenchmarks\n~~~~~~~~~~\n\n| Benchmark code located in pyexcelerate/tests/benchmark.py\n| Ubuntu 12.04 LTS, Core i5-3450, 8GB DDR3, Python 2.7.3\n\n::\n\n \n | TEST_NAME | NUM_ROWS | NUM_COLS | TIME_IN_SECONDS |\n |-----------------------------|----------|----------|-----------------|\n | pyexcelerate value fastest | 1000 | 100 | 0.47 |\n | pyexcelerate value faster | 1000 | 100 | 0.51 |\n | pyexcelerate value fast | 1000 | 100 | 1.53 |\n | xlsxwriter value | 1000 | 100 | 0.84 |\n | openpyxl | 1000 | 100 | 2.74 |\n | pyexcelerate style cheating | 1000 | 100 | 1.23 |\n | pyexcelerate style fastest | 1000 | 100 | 2.40 |\n | pyexcelerate style faster | 1000 | 100 | 2.75 |\n | pyexcelerate style fast | 1000 | 100 | 6.15 |\n | xlsxwriter style cheating | 1000 | 100 | 1.21 |\n | xlsxwriter style | 1000 | 100 | 4.85 |\n | openpyxl | 1000 | 100 | 6.32 |\n\n * cheating refers to pregeneration of styles\n\nInstallation\n------------\n\nPyExcelerate is supported on Python 2.6, 2.7, 3.3, 3,4, and 3.5.\n\n::\n\n pip install pyexcelerate\n\nUsage\n-----\n\nWriting bulk data\n~~~~~~~~~~~~~~~~~\n\nFastest\n^^^^^^^\n\n::\n\n from pyexcelerate import Workbook\n\n data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # data is a 2D array\n\n wb = Workbook()\n wb.new_sheet(\"sheet name\", data=data)\n wb.save(\"output.xlsx\")\n\nWriting bulk data to a range\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPyExcelerate also permits you to write data to ranges directly, which is\nfaster than writing cell-by-cell.\n\nFastest\n^^^^^^^\n\n::\n\n from pyexcelerate import Workbook\n\n wb = Workbook()\n ws = wb.new_sheet(\"test\")\n ws.range(\"B2\", \"C3\").value = [[1, 2], [3, 4]]\n wb.save(\"output.xlsx\")\n\nWriting cell data\n~~~~~~~~~~~~~~~~~\n\nFaster\n^^^^^^\n\n::\n\n from datetime import datetime\n from pyexcelerate import Workbook\n\n wb = Workbook()\n ws = wb.new_sheet(\"sheet name\")\n ws.set_cell_value(1, 1, 15) # a number\n ws.set_cell_value(1, 2, 20)\n ws.set_cell_value(1, 3, \"=SUM(A1,B1)\") # a formula\n ws.set_cell_value(1, 4, datetime.now()) # a date\n wb.save(\"output.xlsx\")\n\nFast\n^^^^\n\n::\n\n from datetime import datetime\n from pyexcelerate import Workbook\n\n wb = Workbook()\n ws = wb.new_sheet(\"sheet name\")\n ws[1][1].value = 15 # a number\n ws[1][2].value = 20\n ws[1][3].value = \"=SUM(A1,B1)\" # a formula\n ws[1][4].value = datetime.now() # a date\n wb.save(\"output.xlsx\")\n\nSelecting cells by name\n~~~~~~~~~~~~~~~~~~~~~~~\n\n::\n\n from pyexcelerate import Workbook\n\n wb = Workbook()\n ws = wb.new_sheet(\"sheet name\")\n ws.cell(\"A1\").value = 12\n wb.save(\"output.xlsx\")\n\nMerging cells\n~~~~~~~~~~~~~\n\n::\n\n from pyexcelerate import Workbook\n\n wb = Workbook()\n ws = wb.new_sheet(\"sheet name\")\n ws[1][1].value = 15\n ws.range(\"A1\", \"B1\").merge()\n wb.save(\"output.xlsx\")\n\nStyling cells\n~~~~~~~~~~~~~\n\nStyling cells causes **non-negligible** overhead. It **will** increase\nyour execution time (up to 10x longer if done improperly!). Only style\ncells if absolutely necessary.\n\nFastest\n^^^^^^^\n\n::\n\n from pyexcelerate import Workbook, Color, Style, Font, Fill, Format\n from datetime import datetime\n\n wb = Workbook()\n ws = wb.new_sheet(\"sheet name\")\n ws.set_cell_value(1, 1, 1)\n ws.set_cell_style(1, 1, Style(font=Font(bold=True)))\n ws.set_cell_style(1, 1, Style(font=Font(italic=True)))\n ws.set_cell_style(1, 1, Style(font=Font(underline=True)))\n ws.set_cell_style(1, 1, Style(font=Font(strikethrough=True)))\n ws.set_cell_style(1, 1, Style(fill=Fill(background=Color(255,0,0,0))))\n ws.set_cell_value(1, 2, datetime.now())\n ws.set_cell_style(1, 1, Style(format=Format('mm/dd/yy')))\n wb.save(\"output.xlsx\")\n\nFaster\n^^^^^^\n\n::\n\n from pyexcelerate import Workbook, Color\n from datetime import datetime\n\n wb = Workbook()\n ws = wb.new_sheet(\"sheet name\")\n ws.set_cell_value(1, 1, 1)\n ws.get_cell_style(1, 1).font.bold = True\n ws.get_cell_style(1, 1).font.italic = True\n ws.get_cell_style(1, 1).font.underline = True\n ws.get_cell_style(1, 1).font.strikethrough = True\n ws.get_cell_style(1, 1).fill.background = Color(0, 255, 0, 0)\n ws.set_cell_value(1, 2, datetime.now())\n ws.get_cell_style(1, 1).format.format = 'mm/dd/yy'\n wb.save(\"output.xlsx\")\n\nFast\n^^^^\n\n::\n\n from pyexcelerate import Workbook, Color\n from datetime import datetime\n\n wb = Workbook()\n ws = wb.new_sheet(\"sheet name\")\n ws[1][1].value = 1\n ws[1][1].style.font.bold = True\n ws[1][1].style.font.italic = True\n ws[1][1].style.font.underline = True\n ws[1][1].style.font.strikethrough = True\n ws[1][1].style.fill.background = Color(0, 255, 0, 0)\n ws[1][2].value = datetime.now()\n ws[1][2].style.format.format = 'mm/dd/yy'\n wb.save(\"output.xlsx\")\n\n**Note** that ``.style.format.format``'s repetition is due to planned\nsupport for conditional formatting and other related features. The\nformatting syntax may be improved in the future.\n\nStyling ranges\n~~~~~~~~~~~~~~\n\n::\n\n from pyexcelerate import Workbook, Color\n from datetime import datetime\n\n wb = Workbook()\n ws = wb.new_sheet(\"test\")\n ws.range(\"A1\",\"C3\").value = 1\n ws.range(\"A1\",\"C1\").style.font.bold = True\n ws.range(\"A2\",\"C3\").style.font.italic = True\n ws.range(\"A3\",\"C3\").style.fill.background = Color(255, 0, 0, 0)\n ws.range(\"C1\",\"C3\").style.font.strikethrough = True\n\nStyling rows\n~~~~~~~~~~~~\n\nA simpler (and faster) way to style an entire row.\n\nFastest\n^^^^^^^\n\n::\n\n from pyexcelerate import Workbook, Color, Style, Fill\n from datetime import datetime\n\n wb = Workbook()\n ws = wb.new_sheet(\"sheet name\")\n ws.set_row_style(1, Style(fill=Fill(background=Color(255,0,0,0))))\n wb.save(\"output.xlsx\")\n\nFaster\n^^^^^^\n\n::\n\n from pyexcelerate import Workbook, Color\n from datetime import datetime\n\n wb = Workbook()\n ws = wb.new_sheet(\"sheet name\")\n ws.get_row_style(1).fill.background = Color(255, 0, 0)\n wb.save(\"output.xlsx\")\n\nFast\n^^^^\n\n::\n\n from pyexcelerate import Workbook, Color\n from datetime import datetime\n\n wb = Workbook()\n ws = wb.new_sheet(\"sheet name\")\n ws[1].style.fill.background = Color(255, 0, 0)\n wb.save(\"output.xlsx\")\n\nStyling columns\n~~~~~~~~~~~~~~~\n\nFastest\n^^^^^^^\n\n::\n\n from pyexcelerate import Workbook, Color, Style, Fill\n from datetime import datetime\n\n wb = Workbook()\n ws = wb.new_sheet(\"sheet name\")\n ws.set_col_style(1, Style(fill=Fill(background=Color(255,0,0,0))))\n wb.save(\"output.xlsx\")\n\nAvailable style attributes\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nConsistent with the implementation patterns above, the following style\nparameters are available:\n\n::\n\n ws[1][1].style.font.bold = True\n ws[1][1].style.font.italic = True\n ws[1][1].style.font.underline = True\n ws[1][1].style.font.strikethrough = True\n ws[1][1].style.font.color = Color(255, 0, 255)\n ws[1][1].style.fill.background = Color(0, 255, 0)\n ws[1][1].style.alignment.vertical = 'top'\n ws[1][1].style.alignment.horizontal = 'right'\n ws[1][1].style.alignment.rotation = 90\n ws[1][1].style.alignment.wrap_text = True\n ws[1][1].style.borders.top.color = Color(255, 0, 0)\n ws[1][1].style.borders.right.style = '-.'\n\nEach attribute also has constructors for implementing via\n``set_cell_style()``.\n\nThe following border styles are available: ``.-``, ``..-``, ``--``,\n``..``, ``=``, ``.``, ``medium -.``, ``medium -..``, ``medium --``,\n``/-.``, ``_``\n\nSetting row heights and column widths\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nRow heights and column widths are set using the ``size`` attribute in\n``Style``. Appropriate values are: \\* ``-1`` for auto-fit \\* ``0`` for\nhidden \\* Any other value for the appropriate size.\n\nFor example, to hide column B:\n\n::\n\n from pyexcelerate import Workbook, Color, Style, Fill\n from datetime import datetime\n\n wb = Workbook()\n ws = wb.new_sheet(\"sheet name\")\n ws.set_col_style(2, Style(size=0))\n wb.save(\"output.xlsx\")\n\nLinked styles\n~~~~~~~~~~~~~\n\nPyExcelerate supports using style objects instead manually setting each\nattribute as well. This permits you to modify the style at a later time.\n\n::\n\n from pyexcelerate import Workbook, Font\n\n wb = Workbook()\n ws = wb.new_sheet(\"sheet name\")\n ws[1][1].value = 1\n font = Font(bold=True, italic=True, underline=True, strikethrough=True)\n ws[1][1].style.font = font\n wb.save(\"output.xlsx\")\n\nHidden sheet\n~~~~~~~~~~~~\n\nPyExcelerate supports adding hidden sheets. Note that the first sheet cannot be hidden.\n\n::\n\n from pyexcelerate import Workbook\n\n wb = Workbook()\n ws = wb.new_sheet(\"visible sheet\")\n ws = wb.new_sheet(\"hidden sheet\", hidden=True)\n wb.save(\"output.xlsx\")\n\nPackaging with PyInstaller\n--------------------------\n\nPyInstaller is the only packager officially supported by PyExcelerate.\nCopy hook-pyexcelerate.Writer.py to your PyInstaller hooks directory.\n\nSupport\n-------\n\nPlease use the GitHub Issue Tracker and pull request system to report\nbugs/issues and submit improvements/changes, respectively. **Pull\nrequests *must* be based against the dev branch - if not, we will reject the PR\nand ask you to rebase against the correct branch.** All nontrivial\nchanges to code should be accompanied by a test when appropriate. We use\nthe Nose testing framework.\n\n.. |build-status-master| image:: https://travis-ci.org/kz26/PyExcelerate.png?branch=master\n :target: https://travis-ci.org/kz26/PyExcelerate\n.. |build-status-dev| image:: https://travis-ci.org/kz26/PyExcelerate.png?branch=dev\n :target: https://travis-ci.org/kz26/PyExcelerate\n.. |coverage-status| image:: https://coveralls.io/repos/kz26/PyExcelerate/badge.png\n :target: https://coveralls.io/r/kz26/PyExcelerate\n",
"bugtrack_url": null,
"license": null,
"summary": "Accelerated Excel XLSX Writing Library for Python 2/3",
"version": "0.12.0",
"project_urls": {
"Homepage": "https://github.com/kz26/PyExcelerate"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "adcbee90990ff687cce9cab1ad5b5e8f08ac6bbe2dd04d96188c20f8b1ed1111",
"md5": "07598d0fe606782f983581b4d38029ee",
"sha256": "3135fb823f2ba5bbed74c079c26f412fb68b9411427d7e1563607a6cb12b2c3f"
},
"downloads": -1,
"filename": "PyExcelerate-0.12.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "07598d0fe606782f983581b4d38029ee",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 28933,
"upload_time": "2024-06-10T11:31:49",
"upload_time_iso_8601": "2024-06-10T11:31:49.656336Z",
"url": "https://files.pythonhosted.org/packages/ad/cb/ee90990ff687cce9cab1ad5b5e8f08ac6bbe2dd04d96188c20f8b1ed1111/PyExcelerate-0.12.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "52fb1575032802af4aff5b9cc36cab3b5dd89793f4a88d02476a602f09d31d0e",
"md5": "71753afa39bcf19717ff8dbacfa525e9",
"sha256": "9a8f7f6fe2424acf07f8a70762a5c50c961c13f2d891d828795437bbcb1a1672"
},
"downloads": -1,
"filename": "pyexcelerate-0.12.0.tar.gz",
"has_sig": false,
"md5_digest": "71753afa39bcf19717ff8dbacfa525e9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 29538,
"upload_time": "2024-06-10T11:31:51",
"upload_time_iso_8601": "2024-06-10T11:31:51.038417Z",
"url": "https://files.pythonhosted.org/packages/52/fb/1575032802af4aff5b9cc36cab3b5dd89793f4a88d02476a602f09d31d0e/pyexcelerate-0.12.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-10 11:31:51",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "kz26",
"github_project": "PyExcelerate",
"travis_ci": true,
"coveralls": true,
"github_actions": true,
"requirements": [],
"lcname": "pyexcelerate"
}