xlsxir v1.0.0 Release Notes

  • ๐ŸŽ Major changes in version 1.0.0 (non-backwards compatible) to improve performance and incorporate new functionality, including:

    • ๐Ÿ”จ Refactored the Xlsxir.Unzip module to extract .xlsx contents to file instead of memory to improve memory usage. The following functions were created to support this functionality:
      • Xlsxir.Unzip.extract_xml_to_file/2 - Extracts necessary files to a ./temp directory for use during the parsing process
      • Xlsxir.Unzip.delete_dir/1 - Deletes './temp' directory and all of its contents
    • ๐ŸŽ Implemented Simple API for XML (SAX) parsing functionalty via the Erlsom Erlang library to improve performance and allow support for large .xlsx files. The SweetXml parsing library has been deprecated from Xlsxir and is no longer utilized in v1.0.0.
    • Implemented Erlang Term Storage (ETS) for temporary storage of extracted data.
    • Replaced option argument from the initial extract function (Xlsxir.extract/3) with timer which is a boolean flag that controls Xlsxir.Timer functionality. Data is no longer returned via Xlsxir.extract/3 and is instead stored in an ETS process.
    • Implemented various functions for accessing the extracted data:
      • Xlsxir.get_list/0 - Return entire worksheet data in the form of a list of row lists
      • Xlsxir.get_map/0 - Return entire worksheet data in the form of a map of cell names and values
      • Xlsxir.get_cell/1 - Return value of specified cell
      • Xlsxir.get_row/1 - Return values of specified row
      • Xlsxir.get_col/1 - Return values of specified column
    • ๐Ÿ†“ Implemented Xlsxir.close/0 function to allow the deletion of the ETS process containing extracted worksheet data to free up memory.
    • Implemented Xlsxir.Timer module for tracking elapsed time of extraction process.
    • ๐Ÿ”„ Changed cell references from atoms to strings due to Elixir atom limitations (i.e. :A1 to "A1").
    • ๐Ÿ“š Updated documentation and testing to incorporate changes.