2.4.5 (2017-03-07)

Bugfixes

  • #750 Adding images keeps file handles open
  • #772 Exception for column-only ranges
  • #773 Cannot copy worksheets with non-ascii titles on Python 2

Pull requests

  • 161 Support for non-standard names for Workbook part.
  • 162 Documentation correction

2.4.4 (2017-02-23)

Bugfixes

  • #673 Add close method to workbooks
  • #762 openpyxl can create files with invalid style indices
  • #729 Allow images in write-only mode
  • #744 Rounded corners for charts
  • #747 Use repr when handling non-convertible objects
  • #764 Hashing function is incorrect
  • #765 Named styles share underlying array

Minor Changes

  • Add roundtrip support for worksheet tables.

Pull requests

  • 160 Don’t init mimetypes more than once.

2.4.3 (unreleased)

bad release

2.4.2 (2017-01-31)

Bug fixes

  • #727 DeprecationWarning is incorrect
  • #734 Exception raised if userName is missing
  • #739 Always provide a date1904 attribute
  • #740 Hashes should be stored as Base64
  • #743 Print titles broken on sheetnames with spaces
  • #748 Workbook breaks when active sheet is removed
  • #754 Incorrect descriptor for Filter values
  • #756 Potential XXE vulerability
  • #758 Cannot create files with page breaks and charts
  • #759 Problems with worksheets with commas in their titles

Minor Changes

  • Add unicode support for sheet name incrementation.

2.4.1 (2016-11-23)

Bug fixes

  • #643 Make checking for duplicate sheet titles case insensitive
  • #647 Trouble handling LibreOffice files with named styles
  • #687 Directly assigned new named styles always refer to “Normal”
  • #690 Cannot parse print titles with multiple sheet names
  • #691 Cannot work with macro files created by LibreOffice
  • Prevent duplicate differential styles
  • #694 Allow sheet titles longer than 31 characters
  • #697 Cannot unset hyperlinks
  • #699 Exception raised when format objects use cell references
  • #703 Copy height and width when copying comments
  • #705 Incorrect content type for VBA macros
  • #707 IndexError raised in read-only mode when accessing individual cells
  • #711 Files with external links become corrupted
  • #715 Cannot read files containing macro sheets
  • #717 Details from named styles not preserved when reading files
  • #722 Remove broken Print Title and Print Area definitions

Minor changes

  • Add support for Python 3.6
  • Correct documentation for headers and footers

Deprecations

Worksheet methods get_named_range() and get_sqaured_range()

Bug fixes

2.4.0 (2016-09-15)

Bug fixes

  • #652 Exception raised when epoch is 1904
  • #642 Cannot handle unicode in headers and footers in Python 2
  • #646 Cannot handle unicode sheetnames in Python 2
  • #658 Chart styles, and axis units should not be 0
  • #663 Strings in external workbooks not unicode

Major changes

  • Add support for builtin styles and include one for Pandas

Minor changes

  • Add a keep_links option to load_workbook. External links contain cached copies of the external workbooks. If these are big it can be advantageous to be able to disable them.
  • Provide an example for using cell ranges in DataValidation.
  • PR 138 - add copy support to comments.

2.4.0-b1 (2016-06-08)

Minor changes

  • Add an the alias hide_drop_down to DataValidation for showDropDown because that is how Excel works.

Bug fixes

  • #625 Exception raises when inspecting EmptyCells in read-only mode
  • #547 Functions for handling OOXML “escaped” ST_XStrings
  • #629 Row Dimensions not supported in write-only mode
  • #530 Problems when removing worksheets with charts
  • #630 Cannot use SheetProtection in write-only mode

Features

  • Add write support for worksheet tables

2.4.0-a1 (2016-04-11)

Minor changes

  • Remove deprecated methods from DataValidation
  • Remove deprecated methods from PrintPageSetup
  • Convert AutoFilter to Serialisable and extend support for filters
  • Add support for SortState
  • Removed use_iterators keyword when loading workbooks. Use read_only instead.
  • Removed optimized_write keyword for new workbooks. Use write_only instead.
  • Improve print title support
  • Add print area support
  • New implementation of defined names
  • New implementation of page headers and footers
  • Add support for Python’s NaN
  • Added iter_cols method for worksheets
  • ws.rows and ws.columns now always return generators and start at the top of the worksheet
  • Add a values property for worksheets
  • Default column width changed to 8 as per the specification

Deprecations

  • Cell anchor method
  • Worksheet point_pos method
  • Worksheet add_print_title method
  • Worksheet HeaderFooter attribute, replaced by individual ones
  • Flatten function for cells
  • Workbook get_named_range, add_named_range, remove_named_range, get_sheet_names, get_sheet_by_name
  • Comment text attribute
  • Use of range strings deprecated for ws.iter_rows()
  • Use of coordinates deprecated for ws.cell()
  • Deprecate .copy() method for StyleProxy objects

Bug fixes

  • #152 Hyperlinks lost when reading files
  • #171 Add function for copying worksheets
  • #386 Cells with inline strings considered empty
  • #397 Add support for ranges of rows and columns
  • #446 Workbook with definedNames corrupted by openpyxl
  • #481 “safe” reserved ranges are not read from workbooks
  • #501 Discarding named ranges can lead to corrupt files
  • #574 Exception raised when using the class method to parse Relationships
  • #579 Crashes when reading defined names with no content
  • #597 Cannot read worksheets without coordinates
  • #617 Customised named styles not correctly preserved

2.3.5 (2016-04-11)

Bug fixes

  • #618 Comments not written in write-only mode

2.3.4 (2016-03-16)

Bug fixes

  • #594 Content types might be missing when keeping VBA
  • #599 Cells with only one cell look empty
  • #607 Serialise NaN as ‘’

Minor changes

  • Preserve the order of external references because formualae use numerical indices.
  • Typo corrected in cell unit tests (PR 118)

2.3.3 (2016-01-18)

Bug fixes

  • #540 Cannot read merged cells in read-only mode
  • #565 Empty styled text blocks cannot be parsed
  • #569 Issue warning rather than raise Exception raised for unparsable definedNames
  • #575 Cannot open workbooks with embdedded OLE files
  • #584 Exception when saving borders with attributes

Minor changes

  • PR 103 Documentation about chart scaling and axis limits
  • Raise an exception when trying to copy cells from other workbooks.

2.3.2 (2015-12-07)

Bug fixes

  • #554 Cannot add comments to a worksheet when preserving VBA
  • #561 Exception when reading phonetic text
  • #562 DARKBLUE is the same as RED
  • #563 Minimum for row and column indexes not enforced

Minor changes

  • PR 97 One VML file per worksheet.
  • PR 96 Correct descriptor for CharacterProperties.rtl
  • #498 Metadata is not essential to use the package.

2.3.1 (2015-11-20)

Bug fixes

  • #534 Exception when using columns property in read-only mode.
  • #536 Incorrectly handle comments from Google Docs files.
  • #539 Flexible value types for conditional formatting.
  • #542 Missing content types for images.
  • #543 Make sure images fit containers on all OSes.
  • #544 Gracefully handle missing cell styles.
  • #546 ExternalLink duplicated when editing a file with macros.
  • #548 Exception with non-ASCII worksheet titles
  • #551 Combine multiple LineCharts

Minor changes

  • PR 88 Fix page margins in parser.

2.3.0 (2015-10-20)

Major changes

  • Support the creation of chartsheets

Bug fixes

  • #532 Problems when cells have no style in read-only mode.

Minor changes

  • PR 79 Make PlotArea editable in charts
  • Use graphicalProperties as the alias for spPr

2.3.0-b2 (2015-09-04)

Bug fixes

  • #488 Support hashValue attribute for sheetProtection
  • #493 Warn that unsupported extensions will be dropped
  • #494 Cells with exponentials causes a ValueError
  • #497 Scatter charts are broken
  • #499 Inconsistent conversion of localised datetimes
  • #500 Adding images leads to unreadable files
  • #509 Improve handling of sheet names
  • #515 Non-ascii titles have bad repr
  • #516 Ignore unassigned worksheets

Minor changes

  • Worksheets are now iterable by row.
  • Assign individual cell styles only if they are explicitly set.

2.3.0-b1 (2015-06-29)

Major changes

  • Shift to using (row, column) indexing for cells. Cells will at some point lose coordinates.
  • New implementation of conditional formatting. Databars now partially preserved.
  • et_xmlfile is now a standalone library.
  • Complete rewrite of chart package
  • Include a tokenizer for fomulae to be able to adjust cell references in them. PR 63

Minor changes

  • Read-only and write-only worksheets renamed.
  • Write-only workbooks support charts and images.
  • PR76 Prevent comment images from conflicting with VBA

Bug fixes

  • #81 Support stacked bar charts
  • #88 Charts break hyperlinks
  • #97 Pie and combination charts
  • #99 Quote worksheet names in chart references
  • #150 Support additional chart options
  • #172 Support surface charts
  • #381 Preserve named styles
  • #470 Adding more than 10 worksheets with the same name leads to duplicates sheet names and an invalid file

2.2.6 (unreleased)

Bug fixes

  • #502 Unexpected keyword “mergeCell”
  • #503 tostring missing in dump_worksheet
  • #506 Non-ASCII formulae cannot be parsed
  • #508 Cannot save files with coloured tabs
  • Regex for ignoring named ranges is wrong (character class instead of prefix)

2.2.5 (2015-06-29)

Bug fixes

  • #463 Unexpected keyword “mergeCell”
  • #484 Unusual dimensions breaks read-only mode
  • #485 Move return out of loop

2.2.4 (2015-06-17)

Bug fixes

  • #464 Cannot use images when preserving macros
  • #465 ws.cell() returns an empty cell on read-only workbooks
  • #467 Cannot edit a file with ActiveX components
  • #471 Sheet properties elements must be in order
  • #475 Do not redefine class __slots__ in subclasses
  • #477 Write-only support for SheetProtection
  • #478 Write-only support for DataValidation
  • Improved regex when checking for datetime formats

2.2.3 (2015-05-26)

Bug fixes

  • #451 fitToPage setting ignored
  • #458 Trailing spaces lost when saving files.
  • #459 setup.py install fails with Python 3
  • #462 Vestigial rId conflicts when adding charts, images or comments
  • #455 Enable Zip64 extensions for all versions of Python

2.2.2 (2015-04-28)

Bug fixes

  • #447 Uppercase datetime number formats not recognised.
  • #453 Borders broken in shared_styles.

2.2.1 (2015-03-31)

Minor changes

  • PR54 Improved precision on times near midnight.
  • PR55 Preserve macro buttons

Bug fixes

  • #429 Workbook fails to load because header and footers cannot be parsed.
  • #433 File-like object with encoding=None
  • #434 SyntaxError when writing page breaks.
  • #436 Read-only mode duplicates empty rows.
  • #437 Cell.offset raises an exception
  • #438 Cells with pivotButton and quotePrefix styles cannot be read
  • #440 Error when customised versions of builtin formats
  • #442 Exception raised when a fill element contains no children
  • #444 Styles cannot be copied

2.2.0 (2015-03-11)

Bug fixes

  • #415 Improved exception when passing in invalid in memory files.

2.2.0-b1 (2015-02-18)

Major changes

  • Cell styles deprecated, use formatting objects (fonts, fills, borders, etc.) directly instead
  • Charts will no longer try and calculate axes by default
  • Support for template file types - PR21
  • Moved ancillary functions and classes into utils package - single place of reference
  • PR 34 Fully support page setup
  • Removed SAX-based XML Generator. Special thanks to Elias Rabel for implementing xmlfile for xml.etree
  • Preserve sheet view definitions in existing files (frozen panes, zoom, etc.)

Bug fixes

  • #103 Set the zoom of a sheet
  • #199 Hide gridlines
  • #215 Preserve sheet view setings
  • #262 Set the zoom of a sheet
  • #392 Worksheet header not read
  • #387 Cannot read files without styles.xml
  • #410 Exception when preserving whitespace in strings
  • #417 Cannot create print titles
  • #420 Rename confusing constants
  • #422 Preserve color index in a workbook if it differs from the standard

Minor changes

  • Use a 2-way cache for column index lookups
  • Clean up tests in cells
  • PR 40 Support frozen panes and autofilter in write-only mode
  • Use ws.calculate_dimension(force=True) in read-only mode for unsized worksheets

2.1.5 (2015-02-18)

Bug fixes

  • #403 Cannot add comments in write-only mode
  • #401 Creating cells in an empty row raises an exception
  • #408 from_excel adjustment for Julian dates 1 < x < 60
  • #409 refersTo is an optional attribute

Minor changes

  • Allow cells to be appended to standard worksheets for code compatibility with write-only mode.

2.1.4 (2014-12-16)

Bug fixes

  • #393 IterableWorksheet skips empty cells in rows
  • #394 Date format is applied to all columns (while only first column contains dates)
  • #395 temporary files not cleaned properly
  • #396 Cannot write “=” in Excel file
  • #398 Cannot write empty rows in write-only mode with LXML installed

Minor changes

  • Add relation namespace to root element for compatibility with iWork
  • Serialize comments relation in LXML-backend

2.1.3 (2014-12-09)

Minor changes

  • PR 31 Correct tutorial
  • PR 32 See #380
  • PR 37 Bind worksheet to ColumnDimension objects

Bug fixes

  • #379 ws.append() doesn’t set RowDimension Correctly
  • #380 empty cells formatted as datetimes raise exceptions

2.1.2 (2014-10-23)

Minor changes

  • PR 30 Fix regex for positive exponentials
  • PR 28 Fix for #328

Bug fixes

  • #120, #168 defined names with formulae raise exceptions, #292
  • #328 ValueError when reading cells with hyperlinks
  • #369 IndexError when reading definedNames
  • #372 number_format not consistently applied from styles

2.1.1 (2014-10-08)

Minor changes

  • PR 20 Support different workbook code names
  • Allow auto_axis keyword for ScatterCharts

Bug fixes

  • #332 Fills lost in ConditionalFormatting
  • #360 Support value=”none” in attributes
  • #363 Support undocumented value for textRotation
  • #364 Preserve integers in read-only mode
  • #366 Complete read support for DataValidation
  • #367 Iterate over unsized worksheets

2.1.0 (2014-09-21)

Major changes

  • “read_only” and “write_only” new flags for workbooks
  • Support for reading and writing worksheet protection
  • Support for reading hidden rows
  • Cells now manage their styles directly
  • ColumnDimension and RowDimension object manage their styles directly
  • Use xmlfile for writing worksheets if available - around 3 times faster
  • Datavalidation now part of the worksheet package

Minor changes

  • Number formats are now just strings
  • Strings can be used for RGB and aRGB colours for Fonts, Fills and Borders
  • Create all style tags in a single pass
  • Performance improvement when appending rows
  • Cleaner conversion of Python to Excel values
  • PR6 reserve formatting for empty rows
  • standard worksheets can append from ranges and generators

Bug fixes

  • #153 Cannot read visibility of sheets and rows
  • #181 No content type for worksheets
  • 241 Cannot read sheets with inline strings
  • 322 1-indexing for merged cells
  • 339 Correctly handle removal of cell protection
  • 341 Cells with formulae do not round-trip
  • 347 Read DataValidations
  • 353 Support Defined Named Ranges to external workbooks

2.0.5 (2014-08-08)

Bug fixes

  • #348 incorrect casting of boolean strings
  • #349 roundtripping cells with formulae

2.0.4 (2014-06-25)

Minor changes

  • Add a sample file illustrating colours

Bug fixes

  • #331 DARKYELLOW was incorrect
  • Correctly handle extend attribute for fonts

2.0.3 (2014-05-22)

Minor changes

  • Updated docs

Bug fixes

  • #319 Cannot load Workbooks with vertAlign styling for fonts

2.0.2 (2014-05-13)

2.0.1 (2014-05-13) brown bag

2.0.0 (2014-05-13) brown bag

Major changes

  • This is last release that will support Python 3.2
  • Cells are referenced with 1-indexing: A1 == cell(row=1, column=1)
  • Use jdcal for more efficient and reliable conversion of datetimes
  • Significant speed up when reading files
  • Merged immutable styles
  • Type inference is disabled by default
  • RawCell renamed ReadOnlyCell
  • ReadOnlyCell.internal_value and ReadOnlyCell.value now behave the same as Cell
  • Provide no size information on unsized worksheets
  • Lower memory footprint when reading files

Minor changes

  • All tests converted to pytest
  • Pyflakes used for static code analysis
  • Sample code in the documentation is automatically run
  • Support GradientFills
  • BaseColWidth set

Pull requests

  • #70 Add filterColumn, sortCondition support to AutoFilter
  • #80 Reorder worksheets parts
  • #82 Update API for conditional formatting
  • #87 Add support for writing Protection styles, others
  • #89 Better handling of content types when preserving macros

Bug fixes

  • #46 ColumnDimension style error
  • #86 reader.worksheet.fast_parse sets booleans to integers
  • #98 Auto sizing column widths does not work
  • #137 Workbooks with chartsheets
  • #185 Invalid PageMargins
  • #230 Using v in cells creates invalid files
  • #243 - IndexError when loading workbook
  • #263 - Forded conversion of line breaks
  • #267 - Raise exceptions when passed invalid types
  • #270 - Cannot open files which use non-standard sheet names or reference Ids
  • #269 - Handling unsized worksheets in IterableWorksheet
  • #270 - Handling Workbooks with non-standard references
  • #275 - Handling auto filters where there are only custom filters
  • #277 - Harmonise chart and cell coordinates
  • #280- Explicit exception raising for invalid characters
  • #286 - Optimized writer can not handle a datetime.time value
  • #296 - Cell coordinates not consistent with documentation
  • #300 - Missing column width causes load_workbook() exception
  • #304 - Handling Workbooks with absolute paths for worksheets (from Sharepoint)

1.8.6 (2014-05-05)

Minor changes

Fixed typo for import Elementtree

Bugfixes

  • #279 Incorrect path for comments files on Windows

1.8.5 (2014-03-25)

Minor changes

  • The ‘=’ string is no longer interpreted as a formula
  • When a client writes empty xml tags for cells (e.g. <c r=’A1’></c>), reader will not crash

1.8.4 (2014-02-25)

Bugfixes

  • #260 better handling of undimensioned worksheets
  • #268 non-ascii in formualae
  • #282 correct implementation of register_namepsace for Python 2.6

1.8.3 (2014-02-09)

Major changes

Always parse using cElementTree

Minor changes

Slight improvements in memory use when parsing

  • #256 - error when trying to read comments with optimised reader
  • #260 - unsized worksheets
  • #264 - only numeric cells can be dates

1.8.2 (2014-01-17)

  • #247 - iterable worksheets open too many files
  • #252 - improved handling of lxml
  • #253 - better handling of unique sheetnames

1.8.1 (2014-01-14)

1.8.0 (2014-01-08)

Compatibility

Support for Python 2.5 dropped.

Major changes

  • Support conditional formatting
  • Support lxml as backend
  • Support reading and writing comments
  • pytest as testrunner now required
  • Improvements in charts: new types, more reliable

Minor changes

  • load_workbook now accepts data_only to allow extracting values only from formulae. Default is false.
  • Images can now be anchored to cells
  • Docs updated
  • Provisional benchmarking
  • Added convenience methods for accessing worksheets and cells by key

1.7.0 (2013-10-31)

Major changes

Drops support for Python < 2.5 and last version to support Python 2.5

Compatibility

Tests run on Python 2.5, 2.6, 2.7, 3.2, 3.3

Merged pull requests

  • 27 Include more metadata
  • 41 Able to read files with chart sheets
  • 45 Configurable Worksheet classes
  • 3 Correct serialisation of Decimal
  • 36 Preserve VBA macros when reading files
  • 44 Handle empty oddheader and oddFooter tags
  • 43 Fixed issue that the reader never set the active sheet
  • 33 Reader set value and type explicitly and TYPE_ERROR checking
  • 22 added page breaks, fixed formula serialization
  • 39 Fix Python 2.6 compatibility
  • 47 Improvements in styling

Miscellaneous

Performance improvements in optimised writer

Docs updated