Package: pyexcel-io
Support the projectIf your company has embedded pyexcel and its components into a revenue generating
product, please support me on github,patreonorbounty sourceto maintain
the project and develop it further.If you are an individual, you are welcome to support me too and for however long
you feel like. As my backer, you will receiveearly access to pyexcel related contents.And your issues will get prioritized if you would like to become my patreon aspyexcel pro user.With your financial support, I will be able to invest
a little bit more time in coding, documentation and writing interesting posts.Known constraintsFonts, colors and charts are not supported.Nor to read password protected xls, xlsx and ods files.Introductionpyexcel-ioprovidesoneapplication programming interface(API) to read
and write the data in excel format, import the data into and export the data
from database. It provides support for csv(z) format, django database and
sqlalchemy supported databases. Its supported file formats are extended to cover
“xls”, “xlsx”, “ods” by the following extensions:A list of file formats supported by external pluginsPackage nameSupported file formatsDependenciespyexcel-iocsv, csvz[1], tsv,
tsvz[2]pyexcel-xlsxls, xlsx(read only),
xlsm(read only)xlrd,xlwtpyexcel-xlsxxlsxopenpyxlpyexcel-ods3odspyexcel-ezodf,
lxmlpyexcel-odsodsodfpyDedicated file reader and writersPackage nameSupported file formatsDependenciespyexcel-xlsxwxlsx(write only)XlsxWriterpyexcel-libxlsxwxlsx(write only)libxlsxwriterpyexcel-xlsxrxlsx(read only)lxmlpyexcel-xlsbrxlsb(read only)pyxlsbpyexcel-odsrread only for ods, fodslxmlpyexcel-odswwrite only for odsloxunpyexcel-htmlrhtml(read only)lxml,html5libpyexcel-pdfrpdf(read only)camelotPlugin shopping guideSince 2020, all pyexcel-io plugins have dropped the support for python versions
which are lower than 3.6. If you want to use any of those Python versions, please use pyexcel-io
and its plugins versions that are lower than 0.6.0.Except csv files, xls, xlsx and ods files are a zip of a folder containing a lot of
xml filesThe dedicated readers for excel files can stream readIn order to manage the list of plugins installed, you need to use pip to add or remove
a plugin. When you use virtualenv, you can have different plugins per virtual
environment. In the situation where you have multiple plugins that does the same thing
in your environment, you need to tell pyexcel which plugin to use per function call.
For example, pyexcel-ods and pyexcel-odsr, and you want to get_array to use pyexcel-odsr.
You need to append get_array(…, library=’pyexcel-odsr’).Footnotes[1]zipped csv file[2]zipped tsv fileIf you need to manipulate the data, you might do it yourself or use its brother
librarypyexcel.If you would like to extend it, you may use it to write your own
extension to handle a specific file format.InstallationYou can install pyexcel-io via pip:$pipinstallpyexcel-ioor clone it and install it:$gitclonehttps://github.com/pyexcel/pyexcel-io.git$cdpyexcel-io$pythonsetup.pyinstallDevelopment guideDevelopment steps for code changesgit clonehttps://github.com/pyexcel/pyexcel-io.gitcd pyexcel-ioUpgrade your setup tools and pip. They are needed for development and testing only:pip install –upgrade setuptools pipThen install relevant development requirements:pip install -r rnd_requirements.txt # if such a file existspip install -r requirements.txtpip install -r tests/requirements.txtOnce you have finished your changes, please provide test case(s), relevant documentation
and update changelog.ymlNoteAs 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 contributionAlthoughnoseanddoctestare both used in code testing, it is adviable that unit tests are put in tests.doctestis 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:$ makeOn Windows, please issue this command:> test.batBefore you commitPlease run:$ make formatso as to beautify your code otherwise your build may fail your unit test.LicenseNew BSD LicenseChange log0.6.6 - 31.1.2022updated#112: Log Empty Row
Warning instead ‘print’0.6.5 - 08.10.2021updated#109: enable ods3 to
have datetime0.6.4 - 31.10.2020updated#102: skip columns from
imported excel sheet.0.6.3 - 12.10.2020fixed#96: regression: unknown
file type shall trigger NoSupportingPluginFoundupdatedextra dependencies uses 0.6.0 based plugins0.6.2 - 7.10.2020updated#94: keep backward
compatibility for pyexcel-xls 0.4.10.6.1 - 7.10.2020removedpython 3.6 lower versions are no longer supportedupdatedpyexcel-io plugin interface has been rewritten. PyInstaller user will be
impacted. please read ‘Packaging with Pyinstaller’ in the documentation.new query set reader plugin. pyexcel<=0.6.4 has used intrusive way of getting
query set source done. it is against the plugin interface.fixed#74: handle zip files
which contain non-UTF-8 encoded files.added#86: allow trailing
options, get_data(…keep_trailing_empty_cells=True).0.5.20 - 17.7.2019updated#70: when the given file
is a root directory, the error shall read it is not a file0.5.19 - 14.7.2019updatedpyexcel#185: handle stream
conversion if file type(html) needs string content then bytes to handle0.5.18 - 12.06.2019updated#69: Force file
type(force_file_type) on write0.5.17 - 04.04.2019updated#68: Raise IOError when
the data file does not exist0.5.16 - 19.03.2019updated#67: fix conversion
issue for long type on python 2.7 for ods0.5.15 - 16.03.2019updatedpyexcel-ods#33: fix
integer comparision error on i5860.5.14 - 21.02.2019updated#65: add
tests/__init__.py because python2.7 setup.py test needs it0.5.13 - 12.02.2019updated#63: Version 0.5.12
prevents xslx and ods plugin from being loaded0.5.12 - 9.02.2019updated#60: include tests in
tar ball#61: enable python
setup.py test0.5.11 - 3.12.2018updated#59: Please use
scan_plugins_regex, which lml 0.7 complains about0.5.10 - 27.11.2018added#57, long type will not
be written in ods. please use string type. And if the integer is equal or
greater than 10 to the power of 16, it will not be written either in ods. In
both situation, IntegerPrecisionLossError will be raised. And this version
enables pyexcel-ods and pyexcel-ods3 to do so.0.5.9.1 - 30.08.2018updated#53, upgrade lml
dependency to at least 0.0.20.5.9 - 23.08.2018addedpyexcel#148, support
force_file_type0.5.8 - 16.08.2018added#49, support additional
options when detecting float values in csv format. default_float_nan,
ignore_nan_text0.5.7 - 02.05.2018fixed#48, turn off pep 0515#47, csv reader cannot
handle relative file names0.5.6 - 11.01.2018fixed#46, exposebulk_saveto developer0.5.5 - 23.12.2017fixedIssue#45, csv reader
throws exception because google app engine does not support mmap. People who
are not working with google app engine, need not to take this update. Enjoy
your Christmas break.0.5.4 - 10.11.2017updatedPR#44, use unicodewriter
for csvz writers.0.5.3 - 23.10.2017updatedpyexcelpyexcel#105,
remove gease from setup_requires, introduced by 0.5.2.remove python2.6 test support0.5.2 - 20.10.2017addedpyexcel#103, include
LICENSE file in MANIFEST.in, meaning LICENSE file will appear in the released
tar ball.0.5.1 - 02.09.2017Fixedpyexcel-ods#25,
Unwanted dependency on pyexcel.0.5.0 - 30.08.2017AddedCollect all data type conversion codes as service.py.Updated#19, use cString by
default. For python, it will be a performance boost0.4.4 - 08.08.2017Updated#42, raise exception if
database table name does not match the sheet name0.4.3 - 29.07.2017Updated#41, walk away
gracefully when mmap is not available.0.4.2 - 05.07.2017Updated#37, permanently fix the
residue folder pyexcel by release all future releases in a clean clone.0.4.1 - 29.06.2017Updated#39, raise exception
when bulk save in django fails. Pleasebulk_save=Falseif you as the
developer choose to save the records one by one if bulk_save cannot be used.
However, exception in one-by-one save case will be raised as well. This
change is made to raise exception in the first place so that you as the
developer will be suprised when it was deployed in production.0.4.0 - 19.06.2017Updated‘built-in’ as the value to the parameter ‘library’ as parameter to invoke
pyexcel-io’s built-in csv, tsv, csvz, tsvz, django and sql won’t work. It is
renamed to ‘pyexcel-io’.built-in csv, tsv, csvz, tsvz, django and sql are lazy loaded.pyexcel-io plugin interface has been updated. v0.3.x plugins won’t work.#32, csv and csvz file
handle are made sure to be closed. File close mechanism is enfored.iget_data function is introduced to cope with dangling file handle issue.RemovedRemoved plugin loading code and lml is used instead0.3.4 - 18.05.2017Updated#33, handle mmap object
differently given as file content. This issue has put in a priority to single
sheet csv over multiple sheets in a single memory stream. The latter format
is pyexcel own creation but is rarely used. In latter case,
multiple_sheet=True should be passed along get_data.#34, treat mmap object
as a file content.#35, encoding parameter
take no effect when given along with file contentuse ZIP_DEFALTED to really do the compression0.3.3 - 30.03.2017Updated#31, support pyinstaller0.3.2 - 26.01.2017Updated#29, change
skip_empty_rows to False by default0.3.1 - 21.01.2017Addedupdated versions of extra packagesUpdated#23, provide helpful
message when old pyexcel plugin existsrestored previously available diagnosis message for missing libraries0.3.0 - 22.12.2016Addedlazy loading of plugins. for example, pyexcel-xls is not entirely loaded
until xls format is used at its first attempted reading or writing. Since it
is loaded, it will not be loaded in the second io action.pyexcel-xls#11, make
case-insensitive for file type0.2.6 - 21.12.2016Updated#24, pass on batch_size0.2.5 - 20.12.2016Updated#26, performance issue
with getting the number of columns.0.2.4 - 24.11.2016Updated#23, Failed to convert
long integer string in python 2 to its actual value0.2.3 - 16.09.2016Added#21, choose subset from
data base tables for export#22, custom renderer if
givenrow_rendereras parameter.0.2.2 - 31.08.2016Addedsupport pagination. two pairs: start_row, row_limit and start_column,
column_limit help you deal with large files.skip_empty_rows=Truewas introduced. To include empty rows, put it to
False.Updated#20, pyexcel-io
attempts to parse cell contents of ‘infinity’ as a float/int, crashes0.2.1 - 11.07.2016Addedcsv format: handle utf-16 encoded csv files. Potentially being able to decode
other formats if correct “encoding” is providedcsv format: write utf-16 encoded files. Potentially other encoding is also
supportedsupport stdin as input stream and stdout as output streamUpdatedAttention, user of pyexcel-io! No longer io stream validation is performed in
python 3. The guideline is: io.StringIO for csv, tsv only, otherwise BytesIO
for xlsx, xls, ods. You can use RWManager.get_io to produce a correct stream
type for you.#15, support foreign
django/sql foreign key0.2.0 - 01.06.2016Addedautoload of pyexcel-io pluginsauto detectdatetime,floatandint. Detection can be switched off byauto_detect_datetime,auto_detect_float,auto_detect_int0.1.0 - 17.01.2016Addedyield key word to return generator as content