5. Revision Log

5.1. pypi version 1.61

  • bug-fix: occasionally a <definedName> tag would case pylightxl to add duplicate of the same worksheet, see issue #75
  • update: updated date handling (code cleanup)
  • added feature: added python2 compatible typing to the library
  • added feature: added io.StringIO support to readcsv

5.2. pypi version 1.60

  • added feature: ability to update NamedRanges wb.update_nr(name, val), see issue #72
  • added feature: ability to find where a NamedRange is wb.nr_loc(name)
  • added feature: ability to fill a range with a single value: wb.ws(‘Sheet1’).update_range(address=’A1:B3’, val=10)
  • update: NamedRanges now add the worksheets if they are not already in the workbook. Note that using readxl with worksheet names specified will also ignore NamedRanges from being read in from the sheet that are not read in.
  • update: updated quickstart docs with the new feature demo scripts

5.3. pypi version 1.59

  • bug fix: error in printing formulas that were read in as None type, see issue #59
  • bug fix: added custom datetime and time style handling, see issue #36

5.4. pypi version 1.58

  • improvement: added support for non-standard sheet ids, see issue #55
  • improvement: added support for general IO file type inputs, see issue #57

5.5. pypi version 1.57

  • improvement: added support for non-standard sheet ids (created by 3rd party tools), see issue #53
  • improvement: added support for writing to existing sheets that contain excel customization, see issue #54

5.6. pypi version 1.56

  • imporvement: added support for non-standard excel file xml tags, see issue #44
  • bug fix: fixed keyrow bug, see issue #47
  • bug fix: addressed csv writing issue related to cells that contain ‘n’ that previous started a new row. New version replaces ‘n’ with ‘’, see issue #49
  • bug fix: newly written workbooks written by pylightxl could not create new worksheets within excel after opening. The fix was to removed sheetView xml tag, see issue #50
  • improvement: added encoding=’utf-8’ to write altworksheets to support chinese encoding error, see issue #51

5.7. pypi version 1.55

  • added comment parsing, see issue #41
  • DEPRECATION WARNING: all indexing method that use “formula” as an argument will be replaced with “output” in future version. Please update your codebase to use “output” instead of “formula”. This was done to simplify indexing the value (output='v'), the formula (output='f') or the comment (output='c').
  • added file stream reading for readxl that now supports with block for reading. See issue #25

5.8. pypi version 1.54

  • added handling for datetime parsing

5.9. pypi version 1.53

  • bug fix: writing to existing file previously would only write to the current working directory, it now can handle subdirs. In addition inadvertently discovered a bug in python source code ElementTree.iterparse where source passed as a string was not closing the file properly. We submitted a issue to python issue tracker.

5.10. pypi version 1.52

  • updated reading error’ed cells “#N/A”
  • updated workbook indexing bug from program generated workbooks that did not index from 1

5.11. pypi version 1.51

  • license update within setup.py

5.12. pypi version 1.50

  • hot-fix: added python2 support for encoding with cgi instead of html

5.13. pypi version 1.49

  • bug-fix: updated encoding for string cells that contained xml-like data (ex: cell A1 “<cell content>”)

5.14. pypi version 1.48

  • add feature to writecsv to be able to handle pathlib object and io.StreamIO object
  • refactored readxl to remove regex, now readxl is all cElementTree
  • refactored readxl/writexl to able to handle excel files written by openpyxl that is generated differently than how excel write files.

5.15. pypi version 1.47

  • added new function: db.nr('table1') returns the contents of named range “table1”
  • added new function: db.ws('Sheet1').range('A1:C3') that returns the contents of a range it also has the ability to return the formulas of the range
  • updated db.ws('Sheet1').row() and db.ws('Sheet1').col() to take in a new argument formual that returns the formulas of a row or col
  • bugfix: write to existing without named ranges was throwing a “repair” error. Fixed typo on xml for it and added unit tests to capture it
  • added new function: xl.readcsv(fn, delimiter, ws) to read csv files and create a pylightxl db out of it (type converted)
  • added new function: xl.writecsv(db, fn, ws, delimiter) to write out a pylightxl worksheet as a csv

5.16. pypi version 1.46

  • bug fix: added ability to input an empty string into the cell update functions (previously entering val=’’) threw and error

5.17. pypi version 1.45

  • added support for cell values that have multiple formats within a single cell. previous versions did not support this functionality since it is logged differently in sharedString.xml

  • added support for updating formulas and viewing them:

    • view formula: db.ws('Sheet1').address('A1', formula=True)
    • edit formula: db.ws('Sheet1').update_address('A1', val='=A1+10')
  • updated the following function arguments to drive commonality:

    • was: readxl(fn, sheetnames) new: readxl(fn, ws)
    • was: writexl(db, path) new: writexl(db, fn)
    • was: db.ws(sheetname) new: db.ws(ws)
    • was: db.add_ws(sheetname, data) new: db.add_ws(ws, data)
  • added new feature to be able to read-in NamedRanges, store it in the Database, update it, remove it, and write it. NamedRanges were integrated with existing function to handle semi-structured-data

    • db.add_nr(name'range1', ws='sheet1', address='A1:C2')
    • db.remove_nr(name='range1')
    • db.nr_names
  • add feature to remove worksheet: db.remove_ws(ws='Sheet1')

  • add feature to rename worksheet: db.rename_ws(old='sh1', new='sh2')

  • added a cleanup function upon writing to delete _pylightxl_ temp folder in case an error left them

  • added feature to write to file that is open by excel by appending a “new_” tag to the file name and a warning message that file is opened by excel so a file was saved as “new_” + filename

5.18. pypi version 1.44

  • bug fix: accounted for num2letter roll-over issue
  • new feature: added a pylightxl native function for handling semi-structured data

5.19. pypi version 1.43

  • bug fix: accounted for reading error’ed out cell “#N/A”
  • bug fix: accounted for bool TRUE/FALSE cell values not registering on readxl
  • bug fix: accounted for edge case that was prematurely splitting cell tags <c r /> by formula closing bracket <f />
  • bug fix: accounted for cell address roll-over

5.20. pypi version 1.42

  • added support for pathlib file reading
  • bug fix: previous version did not handle merged cells properly
  • bug fix: database updates did not update maxcol maxrow if new data addition was larger than the initial dataset
  • bug fix: writexl that use linefeeds did not read in properly into readxl (fixed regex)
  • bug fix: writexl filepath issues

5.21. pypi version 1.41

  • new-feature: write new excel file from pylightxl.Database
  • new-feature: write to existing excel file from pylightxl.Database
  • new-feature: db.update_index(row, col, val) for user defined cell values
  • new-feature: db.update_address(address, val) for user defined cell values
  • bug fix for reading user defined sheets
  • bug fix for mis-alignment of reading user defined sheets and xml files

5.22. pypi version 1.3

  • new-feature: add the ability to call rows/cols via key-value ex: db.ws('Sheet1').keycol('my column header') will return the entire column that has ‘my column header’ in row 1
  • fixed-bug: fixed leading/trailing spaced cell text values that are marked <t xml:space="preserve"> in the sharedString.xml

5.23. pypi version 1.2

  • fixed-bug: fixed Sheet number to custom Sheet name matching for 10+ sheets that were previously only sorting alphabetical which resulted with sorting: Sheet1, Sheet10, Sheet11, Sheet2… and so on.

5.24. pypi version 1.1

  • initial release