3.1.2 (2023-03-11) ================== * `#1963 `_ Cannot read worksheets in read-only mode with locally scoped definitions * `#1974 `_ Empty custom properties cause invalid files 3.1.1 (2023-02-13) ================== Bugfixes -------- * `#1881 `_ DocumentProperties times set by module import only * `#1947 `_ Worksheet-specific definitions are missing 3.1.0 (2023-01-31) ================== New Features ------------ * Added support for data table formulae * Mapped chartspace graphical properties to charts for advanced formatting Bugfixes -------- * `#1156 `_ Table filters are always overriden * `#1360 `_ Can't read some ScatterCharts if n * `#1724 `_ Problem with multilevel indices in dataframes * `#1772 `_ Problem with category indices in dataframes * `#1786 `_ NamedStyles share attributes - mutables gotcha * `#1851 `_ Allow print area to be set to None * `#1852 `_ Worksheet for print title and print areas can't be found * `#1853 `_ Custom document properties that are strings can be empty * `#1858 `_ ConditionalFormatting lost when pivot table updated * `#1864 `_ Better handling of defined names * `#1904 `_ dataframe_to_rows() misalignment on multiindex * `#1908 `_ Ditto * `#1912 `_ Excel doesn't like xmlns:space on nodes with only whitespace, which it treats as empty. * `#1942 `_ Exception when print areas use table references. Pull Requests ------------- * `PR409 `_ Support for Rich Text in cells * `PR411 `_ Provide more information when workbook cannot be loaded * `PR407 `_ Support for Custom Document Properties Deprecations ------------ The following properties have been removed from worksheets: formula_attributes, page_breaks, show_summary_below, show_summary_right, page_size orientation. Client code should use the relevant objects. Removals -------- The following deprecated methods have been removed from workbooks: get_named_range, add_named_range, remove_named_range. And the get_emu_dimesions from images. 3.0.10 (2022-05-19) =================== Bugfixes -------- * `#1684 `_ Image files not closed when workbooks are saved * `#1778 `_ Problem with missing scope attribute in Pivot Table formats * `#1821 `_ Excel unhappy when multiple sorts are defined 3.0.9 (2021-09-22) ================== Bugfixes -------- * `#1284 `_ Ignore blank ignored in existing Data Validations * `#1539 `_ Add support for cell protection for merged cell ranges * `#1645 `_ Timezone-aware datetimes raise an Exception * `#1666 `_ Improved normalisation of chart series * `#1670 `_ Catch OverflowError for out of range datetimes * `#1708 `_ Alignment.relativeIndent can be negative * `#1736 `_ Incorrect default value `groupBy` attribute 3.0.8 (brown bag) ================== Deleted because it contained breaking changes from 3.1 3.0.7 (2021-03-09) ================== Bugfixes -------- * `#1510 `_ Problems with zero time values * `#1588 `_ Not possible to correctly convert excel dates to timedelta * `#1589 `_ Exception raised when merging cells which do not have borders all the way round. * `#1594 `_ Python 2 print statement in the tutorial Pull Requests ------------- * `PR392 `_ Add documentation on datetime handling * `PR393 `_ Drop dependency on jdcal * `PR394 `_ Datetime rounding * `PR395 `_ Unify handling of 1900 epoch * `PR397 `_ Add explicit support for reading datetime deltas * `PR399 `_ Millisecond precision for datetimes 3.0.6 (2021-01-14) ================== Bugfixes -------- * `#1154 `_ Borders in differential styles are incorrect * `#1287 `_ Error when opening some pivot tables * `#1366 `_ Resave breaks the border format in conditional formatting rules * `#1450 `_ Read-only workbook not closed properly if generator interrupted * `#1547 `_ Pandas.Multiindex.labels deprecated * `#1552 `_ Pandas.Multiinex not expanded correctly * `#1557 `_ Cannot read rows with exponents * `#1568 `_ numpy.float is deprecated * `#1571 `_ Cells without coordinate attributes not always correctly handled Pull Requests ------------- * `PR385 `_ Improved handling of borders for differential styles * `PR386 `_ Support subclasses of datetime objects * `PR387 `_ Improved handling of cells without coordinates 3.0.5 (2020-08-21) ================== Bugfixes -------- * `#1413 `_ Incorrectly consider currency format as datetime * `#1490 `_ Cannot copy worksheets with merged cells * `#1492 `_ Empty worksheets do not return generators when looping. * `#1496 `_ Hyperlinks duplicated on multiple saves * `#1500 `_ Incorrectly literal format as datetime * `#1502 `_ Links set to range of cells not preserved * `#1507 `_ Exception when opening workbook with chartsheets and tables 3.0.4 (2020-06-24) ================== Bugfixes -------- * `#844 `_ Find tables by name * `#1414 `_ Worksheet protection missing in existing files * `#1439 `_ Exception when reading files with external images * `#1452 `_ Reading lots of merged cells is very slow. * `#1455 `_ Read support for Bubble Charts. * `#1458 `_ Preserve any indexed colours * `#1473 `_ Reading many thousand of merged cells is really slow. * `#1474 `_ Adding tables in write-only mode raises an exception. Pull Requests ------------- * `PR377 `_ Add support for finding tables by name or range. 3.0.3 (2020-01-20) ================== Bugfixes -------- * `#1260 `_ Exception when handling merged cells with hyperlinks * `#1373 `_ Problems when both lxml and defusedxml are installed * `#1385 `_ CFVO with incorrect values cannot be processed 3.0.2 (2019-11-25) ================== Bug fixes --------- * `#1267 `_ DeprecationError if both defusedxml and lxml are installed * `#1345 `_ ws._current_row is higher than ws.max_row * `#1365 `_ Border bottom style is not optional when it should be * `#1367 `_ Empty cells in read-only, values-only mode are sometimes returned as ReadOnlyCells * `#1368 `_ Cannot add page breaks to existing worksheets if none exist already Pull Requests ------------- * `PR359 `_ Improvements to the documentation 3.0.1 (2019-11-14) ================== Bugfixes -------- * `#1250 `_ Cannot read empty charts. Pull Requests ------------- * `PR354 `_ Fix for #1250 * `PR352 `_ TableStyleElement is a sequence 3.0.0 (2019-09-25) ================== Python 3.6+ only release ------------------------ 2.6.4 (2019-09-25) ================== Final release for Python 2.7 and 3.5 ------------------------------------ Bugfixes -------- * ` #1330 `_ Cannot save workbooks with comments more than once. 2.6.3 (2019-08-19) ================== Bugfixes -------- * `#1237 `_ Fix 3D charts. * `#1290 `_ Minimum for holeSize in Doughnut charts too high * `#1291 `_ Warning for MergedCells with comments * `#1296 `_ Pagebreaks duplicated * `#1309 `_ Workbook has no default CellStyle * `#1330 `_ Workbooks with comments cannot be saved multiple times Pull Requests ------------- * `PR344 `_ Make sure NamedStyles number formats are correctly handled 2.6.2 (2019-03-29) ================== Bugfixes -------- * `#1173 `_ Workbook has no _date_formats attribute * `#1190 `_ Cannot create charts for worksheets with quotes in the title * `#1228 `_ MergedCells not removed when range is unmerged * `#1232 `_ Link to pivot table lost from charts * `#1233 `_ Chart colours change after saving * `#1236 `_ Cannot use ws.cell in read-only mode with Python 2.7 2.6.1 (2019-03-04) ================== Bugfixes -------- * `#1174 `_ ReadOnlyCell.is_date does not work properly * `#1175 `_ Cannot read Google Docs spreadsheet with a Pivot Table * `#1180 `_ Charts created with openpyxl cannot be styled * `#1181 `_ Cannot handle some numpy number types * `#1182 `_ Exception when reading unknowable number formats * `#1186 `_ Only last formatting rule for a range loaded * `#1191 `_ Give MergedCell a `value` attribute * `#1193 `_ Cannot process worksheets with comments * `#1197 `_ Cannot process worksheets with both row and page breaks * `#1204 `_ Cannot reset dimensions in ReadOnlyWorksheets * `#1211 `_ Incorrect descriptor in ParagraphProperties * `#1213 `_ Missing `hier` attribute in PageField raises an exception 2.6.0 (2019-02-06) ================== Bugfixes -------- * `#1162 `_ Exception on tables with names containing spaces. * `#1170 `_ Cannot save files with existing images. 2.6.-b1 (2019-01-08) ==================== Bugfixes -------- * `#1141 `_ Cannot use read-only mode with stream * `#1143 `_ Hyperlinks always set on A1 * `#1151 `_ Internal row counter not initialised when reading files * `#1152 `_ Exception raised on out of bounds date 2.6-a1 (2018-11-21) =================== Major changes ------------- * Implement robust for merged cells so that these can be formatted the way Excel does without confusion. Thanks to Magnus Schieder. Minor changes ------------- * Add support for worksheet scenarios * Add read support for chartsheets * Add method for moving ranges of cells on a worksheet * Drop support for Python 3.4 * Last version to support Python 2.7 Deprecations ------------ * Type inference and coercion for cell values 2.5.14 (2019-01-23) =================== Bugfixes -------- * `#1150 `_ Correct typo in LineProperties * `#1142 `_ Exception raised for unsupported image files * `#1159 `_ Exception raised when cannot find source for non-local cache object Pull Requests ------------- * `PR301 `_ Add support for nested brackets to the tokeniser * `PR303 `_ Improvements on handling nested brackets in the tokeniser 2.5.13 (brown bag) ================== 2.5.12 (2018-11-29) =================== Bugfixes -------- * `#1130 `_ Overwriting default font in Normal style affects library default * `#1133 `_ Images not added to anchors. * `#1134 `_ Cannot read pivot table formats without dxId * `#1138 `_ Repeated registration of simple filter could lead to memory leaks Pull Requests ------------- * `PR300 `_ Use defusedxml if available 2.5.11 (2018-11-21) =================== Pull Requests ------------- * `PR295 `_ Improved handling of missing rows * `PR296 `_ Add support for defined names to tokeniser 2.5.10 (2018-11-13) =================== Bugfixes -------- * `#1114 `_ Empty column dimensions should not be saved. Pull Requests ------------- * `PR285 `_ Tokenizer failure for quoted sheet name in second half of range * `PR289 `_ Improved error detection in ranges. 2.5.9 (2018-10-19) ================== Bugfixes -------- * `#1000 `_ Clean AutoFilter name definitions * `#1106 `_ Attribute missing from Shape object * `#1109 `_ Failure to read all DrawingML means workbook can't be read Pull Requests ------------- * `PR281 `_ Allow newlines in formulae * `PR284 `_ Fix whitespace in front of infix operator in formulae 2.5.8 (2018-09-25) ================== * `#877 `_ Cannot control how missing values are displayed in charts. * `#948 `_ Cell references can't be used for chart titles * `#1095 `_ Params in iter_cols and iter_rows methods are slightly wrong. 2.5.7 (2018-09-13) ================== * `#954 `_ Sheet title containing % need quoting in references * `#1047 `_ Cannot set quote prefix * `#1093 `_ Pandas timestamps raise KeyError 2.5.6 (2018-08-30) ================== * `#832 `_ Read-only mode can leave find-handles open when reading dimensions * `#933 `_ Set a worksheet directly as active * `#1086 `_ Internal row counter not adjusted when rows are deleted or inserted 2.5.5 (2018-08-04) ================== Bugfixes -------- * `#1049 `_ Files with Mac epoch are read incorrectly * `#1058 `_ Cannot copy merged cells * `#1066 `_ Cannot access ws.active_cell Pull Requests ------------- * `PR267 `_ Introduce read-support for images 2.5.4 (2018-06-07) ================== Bugfixes -------- * `#1025 `_ Cannot read files with 3D charts. * `#1030 `_ Merged cells take a long time to parse Minor changes ------------- * Improve read support for pivot tables and don't always create a Filters child for filterColumn objects. * `Support folding rows` `_ 2.5.3 (2018-04-18) ================== Bugfixes -------- * `#983 `_ Warning level too aggressive. * `#1015 `_ Alignment and protection values not saved for named styles. * `#1017 `_ Deleting elements from a legend doesn't work. * `#1018 `_ Index names repeated for every row in dataframe. * `#1020 `_ Worksheet protection not being stored. * `#1023 `_ Exception raised when reading a tooltip. 2.5.2 (2018-04-06) ================== Bugfixes -------- * `#949 `_ High memory use when reading text-heavy files. * `#970 `_ Copying merged cells copies references. * `#978 `_ Cannot set comment size. * `#985 `_ Exception when trying to save workbooks with no views. * `#995 `_ Cannot delete last row or column. * `#1002 `_ Cannot read Drawings containing embedded images. Minor changes ------------- * Support for dataframes with multiple columns and multiple indices. 2.5.1 (2018-03-12) ================== Bugfixes -------- * `#934 `_ Headers and footers not included in write-only mode. * `#960 `_ Deprecation warning raised when using ad-hoc access in read-only mode. * `#964 `_ Not all cells removed when deleting multiple rows. * `#966 `_ Cannot read 3d bar chart correctly. * `#967 `_ Problems reading some charts. * `#968 `_ Worksheets with SHA protection become corrupted after saving. * `#974 `_ Problem when deleting ragged rows or columns. * `#976 `_ GroupTransforms and GroupShapeProperties have incorrect descriptors * Make sure that headers and footers in chartsheets are included in the file 2.5.0 (2018-01-24) ================== Minor changes ------------- * Correct definition for Connection Shapes. Related to # 958 2.5.0-b2 (2018-01-19) ===================== Bugfixes -------- * `#915 `_ TableStyleInfo has no required attributes * `#925 `_ Cannot read files with 3D drawings * `#926 `_ Incorrect version check in installer * Cell merging uses transposed parameters * `#928 `_ ExtLst missing keyword for PivotFields * `#932 `_ Inf causes problems for Excel * `#952 `_ Cannot load table styles with custom names Major Changes ------------- * You can now insert and delete rows and columns in worksheets Minor Changes ------------- * pip now handles which Python versions can be used. 2.5.0-b1 (2017-10-19) ===================== Bugfixes -------- * `#812 `_ Explicitly support for multiple cell ranges in conditonal formatting * `#827 `_ Non-contiguous cell ranges in validators get merged * `#837 `_ Empty data validators create invalid Excel files * `#860 `_ Large validation ranges use lots of memory * `#876 `_ Unicode in chart axes not handled correctly in Python 2 * `#882 `_ ScatterCharts have defective axes * `#885 `_ Charts with empty numVal elements cannot be read * `#894 `_ Scaling options from existing files ignored * `#895 `_ Charts with PivotSource cannot be read * `#903 `_ Cannot read gradient fills * `#904 `_ Quotes in number formats could be treated as datetimes Major Changes ------------- `worksheet.cell()` no longer accepts a `coordinate` parameter. The syntax is now `ws.cell(row, column, value=None)` Minor Changes ------------- Added CellRange and MultiCellRange types (thanks to Laurent LaPorte for the suggestion) as a utility type for things like data validations, conditional formatting and merged cells. Deprecations ------------ ws.merged_cell_ranges has been deprecated because MultiCellRange provides sufficient functionality 2.5.0-a3 (2017-08-14) ===================== Bugfixes -------- * `#848 `_ Reading workbooks with Pie Charts raises an exception * `#857 `_ Pivot Tables without Worksheet Sources raise an exception 2.5.0-a2 (2017-06-25) ===================== Major Changes ------------- * Read support for charts Bugfixes -------- * `#833 `_ Cannot access chartsheets by title * `#834 `_ Preserve workbook views * `#841 `_ Incorrect classification of a datetime 2.5.0-a1 (2017-05-30) ===================== Compatibility ------------- * Dropped support for Python 2.6 and 3.3. openpyxl will not run with Python 2.6 Major Changes ------------- * Read/write support for pivot tables Deprecations ------------ * Dropped the anchor method from images and additional constructor arguments Bugfixes -------- * `#779 `_ Fails to recognise Chinese date format` * `#828 `_ Include hidden cells in charts` Pull requests ------------- * `163 `_ Improved GradientFill Minor changes ------------- * Remove deprecated methods from Cell * Remove deprecated methods from Worksheet * Added read/write support for the datetime type for cells 2.4.11 (2018-01-24) =================== * #957 ``_ Relationship type for tables is borked 2.4.10 (2018-01-19) =================== Bugfixes -------- * #912 ``_ Copying objects uses shallow copy * #921 ``_ API documentation not generated automatically * #927 ``_ Exception raised when adding coloured borders together * #931 ``_ Number formats not correctly deduplicated Pull requests ------------- * 203 ``_ Correction to worksheet protection description * 210 ``_ Some improvements to the API docs * 211 ``_ Improved deprecation decorator * 218 ``_ Fix problems with deepcopy 2.4.9 (2017-10-19) ================== Bugfixes -------- * `#809 `_ Incomplete documentation of `copy_worksheet` method * `#811 `_ Scoped definedNames not removed when worksheet is deleted * `#824 `_ Raise an exception if a chart is used in multiple sheets * `#842 `_ Non-ASCII table column headings cause an exception in Python 2 * `#846 `_ Conditional formats not supported in write-only mode * `#849 `_ Conditional formats with no sqref cause an exception * `#859 `_ Headers that start with a number conflict with font size * `#902 `_ TableStyleElements don't always have a condtional format * `#908 `_ Read-only mode sometimes returns too many cells Pull requests ------------- * `#179 `_ Cells kept in a set * `#180 `_ Support for Workbook protection * `#182 `_ Read support for page breaks * `#183 `_ Improve documentation of `copy_worksheet` method * `#198 `_ Fix for #908 2.4.8 (2017-05-30) ================== Bugfixes -------- * AutoFilter.sortState being assignd to the ws.sortState * `#766 `_ Sheetnames with apostrophes need additional escaping * `#729 `_ Cannot open files created by Microsoft Dynamics * `#819 `_ Negative percents not case correctly * `#821 `_ Runtime imports can cause deadlock * `#855 `_ Print area containing only columns leads to corrupt file Minor changes ------------- * Preserve any table styles 2.4.7 (2017-04-24) ================== Bugfixes -------- * `#807 `_ Sample files being included by mistake in sdist 2.4.6 (2017-04-14) ================== Bugfixes -------- * `#776 `_ Cannot apply formatting to plot area * `#780 `_ Exception when element attributes are Python keywords * `#781 `_ Exception raised when saving files with styled columns * `#785 `_ Number formats for data labels are incorrect * `#788 `_ Worksheet titles not quoted in defined names * `#800 `_ Font underlines not read correctly 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. ), 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) ================== * `#246 `_ 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 Known bugfixes -------------- * `#109 `_ * `#165 `_ * `#209 `_ * `#112 `_ * `#166 `_ * `#109 `_ * `#223 `_ * `#124 `_ * `#157 `_ Miscellaneous ------------- Performance improvements in optimised writer Docs updated