Metadata-Version: 1.1
Name: pyexcel-yuri
Version: 0.0.2
Summary: A wrapper library to read, manipulate and write data format
Home-page: https://github.com/Yuri-x/pyexcel-yuri
Author: Yuri
Author-email: yuri@yuri-x.com
License: New BSD
Download-URL: https://github.com/Yuri-x/pyexcel-yuri/archive/0.0.2.tar.gz
Description: ================================================================================

        pyexcel-yuri - Let you focus on data, instead of xlsx format

        ================================================================================

        

        **pyexcel-yuri** 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 Xlsxwriter. 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-yuri via pip:

        

        .. code-block:: bash

        

            $ pip install pyexcel-yuri

        

        

        or clone it and install it:

        

        .. code-block:: bash

        

            $ git clone https://github.com/Yuri-x/pyexcel-yuri.git

            $ cd pyexcel-yuri

            $ python setup.py install

        

        

        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_xlsxy 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_xlsxy 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_xlsxy 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.0.2 - 07.08.2018

        --------------------------------------------------------------------------------

        

        Updated

        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

        

        #. Fix stream type

        

        0.0.1 - 06.08.2018

        --------------------------------------------------------------------------------

        

        Added

        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

        

        #. Init Commit

        

        
        
Keywords: xlsxpython
Platform: UNKNOWN
Classifier: Topic :: Office/Business
Classifier: Topic :: Utilities
Classifier: Topic :: Software Development :: Libraries
Classifier: Programming Language :: Python
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: Implementation :: PyPy
