NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3102 most downloaded on PyPI
A python library to read and write structured data in csv, zipped csvformat and to/from databases
Last release 3 months ago
28 Jun 2026
Ships unpredictably
gaps range from 9 days to 2.8 years
Most releases are documented
notes for 41 of 51 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
51 releases · first in 2014
Fix typos in .moban.d templates by @chfw with @Copilot in #121
Full Changelog: v0.6.7.1...v0.6.8
One column per quarter.
updated
#56: fix regex error when loading multi-file CSV from a directory with special characters (e.g. '++') in its name.
cause file_name error in get_writer.
updated #. #112 _: Log Empty Row Warning instead 'print'
updated
#112: Log Empty Row Warning instead 'print'
updated #. #109 _: enable ods3 to have datetime
updated
#109: enable ods3 to have datetime
updated #. #102 _: skip columns from imported excel sheet.
updated
#102: skip columns from imported excel sheet.
file type shall trigger NoSupportingPluginFound
fixed
#96: regression: unknown file type shall trigger NoSupportingPluginFound
updated
extra dependencies uses 0.6.0 based plugins
updated extra dependencies to use 0.6.0 line of plugins.
fix #96
updated extra dependencies to use 0.6.0 line of plugins.
updated
#94: keep backward compatibility for pyexcel-xls 0.4.1
is a root directory, the error shall read it is not a file
updated
#70: when the given file is a root directory, the error shall read it is not a file
conversion if file type(html) needs string content then bytes to handle
updated
pyexcel#185: handle stream conversion if file type(html) needs string content then bytes to handle
updated #. #69 _: Force file type(force_file_type) on write
updated
#69: Force file type(force_file_type) on write
updated #. #68 _: Raise IOError when the data file does not exist
updated
#68: Raise IOError when the data file does not exist
issue for long type on python 2.7 for ods
updated
#67: fix conversion issue for long type on python 2.7 for ods
tests/__init__.py because python2.7 setup.py test needs it
updated
#65: add tests/__init__.py because python2.7 setup.py test needs it
prevents xslx and ods plugin from being loaded
updated
#63: Version 0.5.12 prevents xslx and ods plugin from being loaded
scan_plugins_regex, which lml 0.7 complains about
updated
#59: Please use scan_plugins_regex, which lml 0.7 complains about
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
added
#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.
updated #. #53 _, upgrade lml dependency to at least 0.0.2
updated
#53, upgrade lml dependency to at least 0.0.2
added #. pyexcel#148 _, support force_file_type
added
pyexcel#148, support force_file_type
options when detecting float values in csv format. default_float_nan, ignore_nan_text
added
#49, support additional options when detecting float values in csv format. default_float_nan, ignore_nan_text
fixed #. #48 _, turn off pep 0515 #. #47 _, csv reader cannot handle relative file names
fixed #. #46 _, expose bulk_save to developer
fixed
#46, expose bulk_save to developer
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. Enj
fixed
Issue #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.
updated #. PR #44 _, use unicodewriter for csvz writers.
updated
PR #44, use unicodewriter for csvz writers.
remove gease from setup_requires, introduced by 0.5.2.
updated
pyexcel pyexcel#105, remove gease from setup_requires, introduced by 0.5.2.
remove python2.6 test support
LICENSE file in MANIFEST.in, meaning LICENSE file will appear in the released tar ball.
added
pyexcel#103, include LICENSE file in MANIFEST.in, meaning LICENSE file will appear in the released tar ball.
Unwanted dependency on pyexcel.
Fixed
pyexcel-ods#25, Unwanted dependency on pyexcel.
database table name does not match the sheet name
Updated
#42, raise exception if database table name does not match the sheet name
gracefully when mmap is not available.
Updated
#41, walk away gracefully when mmap is not available.
residue folder pyexcel by release all future releases in a clean clone.
Updated
#37, permanently fix the residue folder pyexcel by release all future releases in a clean clone.
Nothing published for this version
Updated #. #31 _, support pyinstaller
Updated
#31, support pyinstaller
skip_empty_rows to False by default
Updated
#29, change skip_empty_rows to False by default
message when old pyexcel plugin exists
Added
updated versions of extra packages
Updated
#23, provide helpful message when old pyexcel plugin exists
restored previously available diagnosis message for missing libraries
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.
Added
lazy 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 type
Updated #. #24 __, pass on batch_size
Updated
#24, pass on batch_size
with getting the number of columns.
Updated
#26, performance issue with getting the number of columns.
long integer string in python 2 to its actual value
Updated
#23, Failed to convert long integer string in python 2 to its actual value
given row_renderer as parameter.
column_limit help you deal with large files.
Added
support pagination. two pairs: start_row, row_limit and start_column, column_limit help you deal with large files.
skip_empty_rows=True was introduced. To include empty rows, put it to False.
Updated
#20, pyexcel-io attempts to parse cell contents of 'infinity' as a float/int, crashes
other formats if correct "encoding" is provided
Added
csv format: handle utf-16 encoded csv files. Potentially being able to decode other formats if correct "encoding" is provided
csv format: write utf-16 encoded files. Potentially other encoding is also supported
support stdin as input stream and stdout as output stream
Updated
Attention, 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 key
auto_detect_datetime, auto_detect_float, auto_detect_int
Added
autoload of pyexcel-io plugins
auto detect datetime, float and int. Detection can be switched off by auto_detect_datetime, auto_detect_float, auto_detect_int
Added #. yield key word to return generator as content
Added
yield key word to return generator as content
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →