A wrapper library to read, manipulate and write data in xlsx and xlsm format
Project description
================================================================================
pyexcel-xlsx - Let you focus on data, instead of xlsx format
================================================================================
.. image:: https://raw.githubusercontent.com/pyexcel/pyexcel.github.io/master/images/patreon.png
:target: https://www.patreon.com/pyexcel
.. image:: https://travis-ci.org/pyexcel/pyexcel-xlsx.svg?branch=master
:target: http://travis-ci.org/pyexcel/pyexcel-xlsx
.. image:: https://codecov.io/gh/pyexcel/pyexcel-xlsx/branch/master/graph/badge.svg
:target: https://codecov.io/gh/pyexcel/pyexcel-xlsx
.. image:: https://img.shields.io/gitter/room/gitterHQ/gitter.svg
:target: https://gitter.im/pyexcel/Lobby
.. image:: https://readthedocs.org/projects/pyexcel-xlsx/badge/?version=latest
:target: http://pyexcel-xlsx.readthedocs.org/en/latest/
**pyexcel-xlsx** is a tiny wrapper library to read, manipulate and write data in xlsx and xlsm format using `read_only` mode reader, `write_only` mode writer from openpyxl. You are likely to use it with `pyexcel <https://github.com/pyexcel/pyexcel>`__.
Please note:
1. `auto_detect_int` flag will not take effect because openpyxl detect integer in python 3 by default.
2. `skip_hidden_row_and_column` will get a penalty where `read_only` mode cannot be used.
Known constraints
==================
Fonts, colors and charts are not supported.
Installation
================================================================================
You can install pyexcel-xlsx via pip:
.. code-block:: bash
$ pip install pyexcel-xlsx
or clone it and install it:
.. code-block:: bash
$ git clone https://github.com/pyexcel/pyexcel-xlsx.git
$ cd pyexcel-xlsx
$ python setup.py install
Support the project
================================================================================
If your company has embedded pyexcel and its components into a revenue generating
product, please `support me on patreon <https://www.patreon.com/bePatron?u=5537627>`_ to
maintain the project and develop it further.
If you are an individual, you are welcome to support me too on patreon and for however long
you feel like. As a patreon, you will receive
`early access to pyexcel related contents <https://www.patreon.com/pyexcel/posts>`_.
With your financial support, I will be able to invest
a little bit more time in coding, documentation and writing interesting posts.
Usage
================================================================================
As a standalone library
--------------------------------------------------------------------------------
Write to an xlsx file
********************************************************************************
Here's the sample code to write a dictionary to an xlsx file:
.. code-block:: python
>>> from pyexcel_xlsx import save_data
>>> data = OrderedDict() # from collections import OrderedDict
>>> data.update({"Sheet 1": [[1, 2, 3], [4, 5, 6]]})
>>> data.update({"Sheet 2": [["row 1", "row 2", "row 3"]]})
>>> save_data("your_file.xlsx", data)
Read from an xlsx file
********************************************************************************
Here's the sample code:
.. code-block:: python
>>> from pyexcel_xlsx import get_data
>>> data = get_data("your_file.xlsx")
>>> import json
>>> print(json.dumps(data))
{"Sheet 1": [[1, 2, 3], [4, 5, 6]], "Sheet 2": [["row 1", "row 2", "row 3"]]}
Write an xlsx to memory
********************************************************************************
Here's the sample code to write a dictionary to an xlsx file:
.. code-block:: python
>>> from pyexcel_xlsx import save_data
>>> data = OrderedDict()
>>> data.update({"Sheet 1": [[1, 2, 3], [4, 5, 6]]})
>>> data.update({"Sheet 2": [[7, 8, 9], [10, 11, 12]]})
>>> io = StringIO()
>>> save_data(io, data)
>>> # do something with the io
>>> # In reality, you might give it to your http response
>>> # object for downloading
Read from an xlsx from memory
********************************************************************************
Continue from previous example:
.. code-block:: python
>>> # This is just an illustration
>>> # In reality, you might deal with xlsx file upload
>>> # where you will read from requests.FILES['YOUR_XLSX_FILE']
>>> data = get_data(io)
>>> print(json.dumps(data))
{"Sheet 1": [[1, 2, 3], [4, 5, 6]], "Sheet 2": [[7, 8, 9], [10, 11, 12]]}
Pagination feature
********************************************************************************
Let's assume the following file is a huge xlsx file:
.. code-block:: python
>>> huge_data = [
... [1, 21, 31],
... [2, 22, 32],
... [3, 23, 33],
... [4, 24, 34],
... [5, 25, 35],
... [6, 26, 36]
... ]
>>> sheetx = {
... "huge": huge_data
... }
>>> save_data("huge_file.xlsx", sheetx)
And let's pretend to read partial data:
.. code-block:: python
>>> partial_data = get_data("huge_file.xlsx", start_row=2, row_limit=3)
>>> print(json.dumps(partial_data))
{"huge": [[3, 23, 33], [4, 24, 34], [5, 25, 35]]}
And you could as well do the same for columns:
.. code-block:: python
>>> partial_data = get_data("huge_file.xlsx", start_column=1, column_limit=2)
>>> print(json.dumps(partial_data))
{"huge": [[21, 31], [22, 32], [23, 33], [24, 34], [25, 35], [26, 36]]}
Obvious, you could do both at the same time:
.. code-block:: python
>>> partial_data = get_data("huge_file.xlsx",
... start_row=2, row_limit=3,
... start_column=1, column_limit=2)
>>> print(json.dumps(partial_data))
{"huge": [[23, 33], [24, 34], [25, 35]]}
As a pyexcel plugin
--------------------------------------------------------------------------------
No longer, explicit import is needed since pyexcel version 0.2.2. Instead,
this library is auto-loaded. So if you want to read data in xlsx format,
installing it is enough.
Reading from an xlsx file
********************************************************************************
Here is the sample code:
.. code-block:: python
>>> import pyexcel as pe
>>> sheet = pe.get_book(file_name="your_file.xlsx")
>>> sheet
Sheet 1:
+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| 4 | 5 | 6 |
+---+---+---+
Sheet 2:
+-------+-------+-------+
| row 1 | row 2 | row 3 |
+-------+-------+-------+
Writing to an xlsx file
********************************************************************************
Here is the sample code:
.. code-block:: python
>>> sheet.save_as("another_file.xlsx")
Reading from a IO instance
********************************************************************************
You got to wrap the binary content with stream to get xlsx working:
.. code-block:: python
>>> # This is just an illustration
>>> # In reality, you might deal with xlsx file upload
>>> # where you will read from requests.FILES['YOUR_XLSX_FILE']
>>> xlsxfile = "another_file.xlsx"
>>> with open(xlsxfile, "rb") as f:
... content = f.read()
... r = pe.get_book(file_type="xlsx", file_content=content)
... print(r)
...
Sheet 1:
+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| 4 | 5 | 6 |
+---+---+---+
Sheet 2:
+-------+-------+-------+
| row 1 | row 2 | row 3 |
+-------+-------+-------+
Writing to a StringIO instance
********************************************************************************
You need to pass a StringIO instance to Writer:
.. code-block:: python
>>> data = [
... [1, 2, 3],
... [4, 5, 6]
... ]
>>> io = StringIO()
>>> sheet = pe.Sheet(data)
>>> io = sheet.save_to_memory("xlsx", io)
>>> # then do something with io
>>> # In reality, you might give it to your http response
>>> # object for downloading
License
================================================================================
New BSD License
Developer guide
==================
Development steps for code changes
#. git clone https://github.com/pyexcel/pyexcel-xlsx.git
#. cd pyexcel-xlsx
Upgrade your setup tools and pip. They are needed for development and testing only:
#. pip install --upgrade setuptools pip
Then install relevant development requirements:
#. pip install -r rnd_requirements.txt # if such a file exists
#. pip install -r requirements.txt
#. pip install -r tests/requirements.txt
Once you have finished your changes, please provide test case(s), relevant documentation
and update CHANGELOG.rst.
.. note::
As to rnd_requirements.txt, usually, it is created when a dependent
library is not released. Once the dependecy is installed
(will be released), the future
version of the dependency in the requirements.txt will be valid.
How to test your contribution
------------------------------
Although `nose` and `doctest` are both used in code testing, it is adviable that unit tests are put in tests. `doctest` is incorporated only to make sure the code examples in documentation remain valid across different development releases.
On Linux/Unix systems, please launch your tests like this::
$ make
On Windows systems, please issue this command::
> test.bat
How to update test environment and update documentation
---------------------------------------------------------
Additional steps are required:
#. pip install moban
#. git clone https://github.com/moremoban/setupmobans.git # generic setup
#. git clone https://github.com/pyexcel/pyexcel-commons.git commons
#. make your changes in `.moban.d` directory, then issue command `moban`
What is pyexcel-commons
---------------------------------
Many information that are shared across pyexcel projects, such as: this developer guide, license info, etc. are stored in `pyexcel-commons` project.
What is .moban.d
---------------------------------
`.moban.d` stores the specific meta data for the library.
Acceptance criteria
-------------------
#. Has Test cases written
#. Has all code lines tested
#. Passes all Travis CI builds
#. Has fair amount of documentation if your change is complex
#. Please update CHANGELOG.rst
#. Please add yourself to CONTRIBUTORS.rst
#. Agree on NEW BSD License for your contribution
Change log
================================================================================
0.5.5 - 18.12.2017
--------------------------------------------------------------------------------
#. `#22 <https://github.com/pyexcel/pyexcel-xlsx/issues/22>`_, to detect merged
cell in xlsx - fast tracked patreon request.
0.5.4 - 2.11.2017
--------------------------------------------------------------------------------
#. Align the behavior of skip_hidden_row_and_column. Default it to True.
0.5.3 - 2.11.2017
--------------------------------------------------------------------------------
Added
********************************************************************************
#. `#20 <https://github.com/pyexcel/pyexcel-xlsx/issues/20>`_, skip hidden rows
and columns under 'skip_hidden_row_and_column' flag.
0.5.2 - 23.10.2017
--------------------------------------------------------------------------------
updated
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#. pyexcel `#105 <https://github.com/pyexcel/pyexcel/issues/105>`_, remove gease
from setup_requires, introduced by 0.5.1.
#. remove python2.6 test support
#. update its dependecy on pyexcel-io to 0.5.3
0.5.1 - 20.10.2017
--------------------------------------------------------------------------------
added
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#. `#103 <https://github.com/pyexcel/pyexcel/issues/103>`_, include LICENSE file
in MANIFEST.in, meaning LICENSE file will appear in the released tar ball.
0.5.0 - 30.08.2017
--------------------------------------------------------------------------------
Updated
********************************************************************************
#. put dependency on pyexcel-io 0.5.0, which uses cStringIO instead of StringIO.
Hence, there will be performance boost in handling files in memory.
Removed
********************************************************************************
#. `#18 <https://github.com/pyexcel/pyexcel-xlsx/issues/18>`_, is handled in
pyexcel-io
0.4.2 - 25.08.2017
--------------------------------------------------------------------------------
Updated
********************************************************************************
#. `#18 <https://github.com/pyexcel/pyexcel-xlsx/issues/18>`_, handle unseekable
stream given by http response
0.4.1 - 16.07.2017
--------------------------------------------------------------------------------
Removed
********************************************************************************
#. Removed useless code
0.4.0 - 19.06.2017
--------------------------------------------------------------------------------
Updated
********************************************************************************
#. `#14 <https://github.com/pyexcel/pyexcel-xlsx/issues/14>`_, close file
handle
#. pyexcel-io plugin interface now updated to use
`lml <https://github.com/chfw/lml>`_.
0.3.0 - 22.12.2016
--------------------------------------------------------------------------------
Updated
********************************************************************************
#. Code refactoring with pyexcel-io v 0.3.0
#. `#13 <https://github.com/pyexcel/pyexcel-xlsx/issues/13>`_, turn read_only
flag on openpyxl.
0.2.3 - 05.11.2016
--------------------------------------------------------------------------------
Updated
********************************************************************************
#. `#12 <https://github.com/pyexcel/pyexcel-xlsx/issues/12>`_, remove
UserWarning: Using a coordinate with ws.cell is deprecated.
Use ws[coordinate]
0.2.2 - 31.08.2016
--------------------------------------------------------------------------------
Added
********************************************************************************
#. support pagination. two pairs: start_row, row_limit and start_column, column_limit
help you deal with large files.
0.2.1 - 12.07.2016
--------------------------------------------------------------------------------
Added
********************************************************************************
#. `#8 <https://github.com/pyexcel/pyexcel-xlsx/issues/8>`__, `skip_hidden_sheets` is added. By default, hidden sheets are skipped when reading all sheets. Reading sheet by name or by index are not affected.
0.2.0 - 01.06.2016
--------------------------------------------------------------------------------
Added
********************************************************************************
#. 'library=pyexcel-xlsx' was added to inform pyexcel to use it instead of other libraries, in the situation where there are more than one plugin for a file type, e.g. xlsm
Updated
********************************************************************************
#. support the auto-import feature of pyexcel-io 0.2.0
0.1.0 - 17.01.2016
--------------------------------------------------------------------------------
Added
********************************************************************************
#. Passing "streaming=True" to get_data, you will get the two dimensional array as a generator
#. Passing "data=your_generator" to save_data is acceptable too.
Updated
********************************************************************************
#. compatibility with pyexcel-io 0.1.0
pyexcel-xlsx - Let you focus on data, instead of xlsx format
================================================================================
.. image:: https://raw.githubusercontent.com/pyexcel/pyexcel.github.io/master/images/patreon.png
:target: https://www.patreon.com/pyexcel
.. image:: https://travis-ci.org/pyexcel/pyexcel-xlsx.svg?branch=master
:target: http://travis-ci.org/pyexcel/pyexcel-xlsx
.. image:: https://codecov.io/gh/pyexcel/pyexcel-xlsx/branch/master/graph/badge.svg
:target: https://codecov.io/gh/pyexcel/pyexcel-xlsx
.. image:: https://img.shields.io/gitter/room/gitterHQ/gitter.svg
:target: https://gitter.im/pyexcel/Lobby
.. image:: https://readthedocs.org/projects/pyexcel-xlsx/badge/?version=latest
:target: http://pyexcel-xlsx.readthedocs.org/en/latest/
**pyexcel-xlsx** is a tiny wrapper library to read, manipulate and write data in xlsx and xlsm format using `read_only` mode reader, `write_only` mode writer from openpyxl. You are likely to use it with `pyexcel <https://github.com/pyexcel/pyexcel>`__.
Please note:
1. `auto_detect_int` flag will not take effect because openpyxl detect integer in python 3 by default.
2. `skip_hidden_row_and_column` will get a penalty where `read_only` mode cannot be used.
Known constraints
==================
Fonts, colors and charts are not supported.
Installation
================================================================================
You can install pyexcel-xlsx via pip:
.. code-block:: bash
$ pip install pyexcel-xlsx
or clone it and install it:
.. code-block:: bash
$ git clone https://github.com/pyexcel/pyexcel-xlsx.git
$ cd pyexcel-xlsx
$ python setup.py install
Support the project
================================================================================
If your company has embedded pyexcel and its components into a revenue generating
product, please `support me on patreon <https://www.patreon.com/bePatron?u=5537627>`_ to
maintain the project and develop it further.
If you are an individual, you are welcome to support me too on patreon and for however long
you feel like. As a patreon, you will receive
`early access to pyexcel related contents <https://www.patreon.com/pyexcel/posts>`_.
With your financial support, I will be able to invest
a little bit more time in coding, documentation and writing interesting posts.
Usage
================================================================================
As a standalone library
--------------------------------------------------------------------------------
Write to an xlsx file
********************************************************************************
Here's the sample code to write a dictionary to an xlsx file:
.. code-block:: python
>>> from pyexcel_xlsx import save_data
>>> data = OrderedDict() # from collections import OrderedDict
>>> data.update({"Sheet 1": [[1, 2, 3], [4, 5, 6]]})
>>> data.update({"Sheet 2": [["row 1", "row 2", "row 3"]]})
>>> save_data("your_file.xlsx", data)
Read from an xlsx file
********************************************************************************
Here's the sample code:
.. code-block:: python
>>> from pyexcel_xlsx import get_data
>>> data = get_data("your_file.xlsx")
>>> import json
>>> print(json.dumps(data))
{"Sheet 1": [[1, 2, 3], [4, 5, 6]], "Sheet 2": [["row 1", "row 2", "row 3"]]}
Write an xlsx to memory
********************************************************************************
Here's the sample code to write a dictionary to an xlsx file:
.. code-block:: python
>>> from pyexcel_xlsx import save_data
>>> data = OrderedDict()
>>> data.update({"Sheet 1": [[1, 2, 3], [4, 5, 6]]})
>>> data.update({"Sheet 2": [[7, 8, 9], [10, 11, 12]]})
>>> io = StringIO()
>>> save_data(io, data)
>>> # do something with the io
>>> # In reality, you might give it to your http response
>>> # object for downloading
Read from an xlsx from memory
********************************************************************************
Continue from previous example:
.. code-block:: python
>>> # This is just an illustration
>>> # In reality, you might deal with xlsx file upload
>>> # where you will read from requests.FILES['YOUR_XLSX_FILE']
>>> data = get_data(io)
>>> print(json.dumps(data))
{"Sheet 1": [[1, 2, 3], [4, 5, 6]], "Sheet 2": [[7, 8, 9], [10, 11, 12]]}
Pagination feature
********************************************************************************
Let's assume the following file is a huge xlsx file:
.. code-block:: python
>>> huge_data = [
... [1, 21, 31],
... [2, 22, 32],
... [3, 23, 33],
... [4, 24, 34],
... [5, 25, 35],
... [6, 26, 36]
... ]
>>> sheetx = {
... "huge": huge_data
... }
>>> save_data("huge_file.xlsx", sheetx)
And let's pretend to read partial data:
.. code-block:: python
>>> partial_data = get_data("huge_file.xlsx", start_row=2, row_limit=3)
>>> print(json.dumps(partial_data))
{"huge": [[3, 23, 33], [4, 24, 34], [5, 25, 35]]}
And you could as well do the same for columns:
.. code-block:: python
>>> partial_data = get_data("huge_file.xlsx", start_column=1, column_limit=2)
>>> print(json.dumps(partial_data))
{"huge": [[21, 31], [22, 32], [23, 33], [24, 34], [25, 35], [26, 36]]}
Obvious, you could do both at the same time:
.. code-block:: python
>>> partial_data = get_data("huge_file.xlsx",
... start_row=2, row_limit=3,
... start_column=1, column_limit=2)
>>> print(json.dumps(partial_data))
{"huge": [[23, 33], [24, 34], [25, 35]]}
As a pyexcel plugin
--------------------------------------------------------------------------------
No longer, explicit import is needed since pyexcel version 0.2.2. Instead,
this library is auto-loaded. So if you want to read data in xlsx format,
installing it is enough.
Reading from an xlsx file
********************************************************************************
Here is the sample code:
.. code-block:: python
>>> import pyexcel as pe
>>> sheet = pe.get_book(file_name="your_file.xlsx")
>>> sheet
Sheet 1:
+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| 4 | 5 | 6 |
+---+---+---+
Sheet 2:
+-------+-------+-------+
| row 1 | row 2 | row 3 |
+-------+-------+-------+
Writing to an xlsx file
********************************************************************************
Here is the sample code:
.. code-block:: python
>>> sheet.save_as("another_file.xlsx")
Reading from a IO instance
********************************************************************************
You got to wrap the binary content with stream to get xlsx working:
.. code-block:: python
>>> # This is just an illustration
>>> # In reality, you might deal with xlsx file upload
>>> # where you will read from requests.FILES['YOUR_XLSX_FILE']
>>> xlsxfile = "another_file.xlsx"
>>> with open(xlsxfile, "rb") as f:
... content = f.read()
... r = pe.get_book(file_type="xlsx", file_content=content)
... print(r)
...
Sheet 1:
+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| 4 | 5 | 6 |
+---+---+---+
Sheet 2:
+-------+-------+-------+
| row 1 | row 2 | row 3 |
+-------+-------+-------+
Writing to a StringIO instance
********************************************************************************
You need to pass a StringIO instance to Writer:
.. code-block:: python
>>> data = [
... [1, 2, 3],
... [4, 5, 6]
... ]
>>> io = StringIO()
>>> sheet = pe.Sheet(data)
>>> io = sheet.save_to_memory("xlsx", io)
>>> # then do something with io
>>> # In reality, you might give it to your http response
>>> # object for downloading
License
================================================================================
New BSD License
Developer guide
==================
Development steps for code changes
#. git clone https://github.com/pyexcel/pyexcel-xlsx.git
#. cd pyexcel-xlsx
Upgrade your setup tools and pip. They are needed for development and testing only:
#. pip install --upgrade setuptools pip
Then install relevant development requirements:
#. pip install -r rnd_requirements.txt # if such a file exists
#. pip install -r requirements.txt
#. pip install -r tests/requirements.txt
Once you have finished your changes, please provide test case(s), relevant documentation
and update CHANGELOG.rst.
.. note::
As to rnd_requirements.txt, usually, it is created when a dependent
library is not released. Once the dependecy is installed
(will be released), the future
version of the dependency in the requirements.txt will be valid.
How to test your contribution
------------------------------
Although `nose` and `doctest` are both used in code testing, it is adviable that unit tests are put in tests. `doctest` is incorporated only to make sure the code examples in documentation remain valid across different development releases.
On Linux/Unix systems, please launch your tests like this::
$ make
On Windows systems, please issue this command::
> test.bat
How to update test environment and update documentation
---------------------------------------------------------
Additional steps are required:
#. pip install moban
#. git clone https://github.com/moremoban/setupmobans.git # generic setup
#. git clone https://github.com/pyexcel/pyexcel-commons.git commons
#. make your changes in `.moban.d` directory, then issue command `moban`
What is pyexcel-commons
---------------------------------
Many information that are shared across pyexcel projects, such as: this developer guide, license info, etc. are stored in `pyexcel-commons` project.
What is .moban.d
---------------------------------
`.moban.d` stores the specific meta data for the library.
Acceptance criteria
-------------------
#. Has Test cases written
#. Has all code lines tested
#. Passes all Travis CI builds
#. Has fair amount of documentation if your change is complex
#. Please update CHANGELOG.rst
#. Please add yourself to CONTRIBUTORS.rst
#. Agree on NEW BSD License for your contribution
Change log
================================================================================
0.5.5 - 18.12.2017
--------------------------------------------------------------------------------
#. `#22 <https://github.com/pyexcel/pyexcel-xlsx/issues/22>`_, to detect merged
cell in xlsx - fast tracked patreon request.
0.5.4 - 2.11.2017
--------------------------------------------------------------------------------
#. Align the behavior of skip_hidden_row_and_column. Default it to True.
0.5.3 - 2.11.2017
--------------------------------------------------------------------------------
Added
********************************************************************************
#. `#20 <https://github.com/pyexcel/pyexcel-xlsx/issues/20>`_, skip hidden rows
and columns under 'skip_hidden_row_and_column' flag.
0.5.2 - 23.10.2017
--------------------------------------------------------------------------------
updated
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#. pyexcel `#105 <https://github.com/pyexcel/pyexcel/issues/105>`_, remove gease
from setup_requires, introduced by 0.5.1.
#. remove python2.6 test support
#. update its dependecy on pyexcel-io to 0.5.3
0.5.1 - 20.10.2017
--------------------------------------------------------------------------------
added
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#. `#103 <https://github.com/pyexcel/pyexcel/issues/103>`_, include LICENSE file
in MANIFEST.in, meaning LICENSE file will appear in the released tar ball.
0.5.0 - 30.08.2017
--------------------------------------------------------------------------------
Updated
********************************************************************************
#. put dependency on pyexcel-io 0.5.0, which uses cStringIO instead of StringIO.
Hence, there will be performance boost in handling files in memory.
Removed
********************************************************************************
#. `#18 <https://github.com/pyexcel/pyexcel-xlsx/issues/18>`_, is handled in
pyexcel-io
0.4.2 - 25.08.2017
--------------------------------------------------------------------------------
Updated
********************************************************************************
#. `#18 <https://github.com/pyexcel/pyexcel-xlsx/issues/18>`_, handle unseekable
stream given by http response
0.4.1 - 16.07.2017
--------------------------------------------------------------------------------
Removed
********************************************************************************
#. Removed useless code
0.4.0 - 19.06.2017
--------------------------------------------------------------------------------
Updated
********************************************************************************
#. `#14 <https://github.com/pyexcel/pyexcel-xlsx/issues/14>`_, close file
handle
#. pyexcel-io plugin interface now updated to use
`lml <https://github.com/chfw/lml>`_.
0.3.0 - 22.12.2016
--------------------------------------------------------------------------------
Updated
********************************************************************************
#. Code refactoring with pyexcel-io v 0.3.0
#. `#13 <https://github.com/pyexcel/pyexcel-xlsx/issues/13>`_, turn read_only
flag on openpyxl.
0.2.3 - 05.11.2016
--------------------------------------------------------------------------------
Updated
********************************************************************************
#. `#12 <https://github.com/pyexcel/pyexcel-xlsx/issues/12>`_, remove
UserWarning: Using a coordinate with ws.cell is deprecated.
Use ws[coordinate]
0.2.2 - 31.08.2016
--------------------------------------------------------------------------------
Added
********************************************************************************
#. support pagination. two pairs: start_row, row_limit and start_column, column_limit
help you deal with large files.
0.2.1 - 12.07.2016
--------------------------------------------------------------------------------
Added
********************************************************************************
#. `#8 <https://github.com/pyexcel/pyexcel-xlsx/issues/8>`__, `skip_hidden_sheets` is added. By default, hidden sheets are skipped when reading all sheets. Reading sheet by name or by index are not affected.
0.2.0 - 01.06.2016
--------------------------------------------------------------------------------
Added
********************************************************************************
#. 'library=pyexcel-xlsx' was added to inform pyexcel to use it instead of other libraries, in the situation where there are more than one plugin for a file type, e.g. xlsm
Updated
********************************************************************************
#. support the auto-import feature of pyexcel-io 0.2.0
0.1.0 - 17.01.2016
--------------------------------------------------------------------------------
Added
********************************************************************************
#. Passing "streaming=True" to get_data, you will get the two dimensional array as a generator
#. Passing "data=your_generator" to save_data is acceptable too.
Updated
********************************************************************************
#. compatibility with pyexcel-io 0.1.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pyexcel-xlsx-0.5.5.tar.gz
(15.3 kB
view hashes)
Built Distribution
Close
Hashes for pyexcel_xlsx-0.5.5-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 488783c3f5195bed8638f6064b11d97f706641b0f065a5416297a01db6cec5ea |
|
MD5 | 34f53105fa57782858890e71cf5f742e |
|
BLAKE2b-256 | e03d04e4142598e6da01753b5eaeb8081d1413854f0e9c37de895dd5c76933f6 |