PyExcelerate


NamePyExcelerate JSON
Version 0.12.0 PyPI version JSON
download
home_pagehttps://github.com/kz26/PyExcelerate
SummaryAccelerated Excel XLSX Writing Library for Python 2/3
upload_time2024-06-10 11:31:51
maintainerKevin Zhang
docs_urlNone
authorKevin Wang, Kevin Zhang
requires_pythonNone
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage
            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"
}
        
Elapsed time: 0.24641s