-
Enhancements
- #444 ReadCSV(): add option to return a query object
-
Maintenance
- #445 Upgrade POI to 5.5.1 and Excel Streaming Reader to 5.2.0
- Maintenance
- #441 Upgrade POI to 5.5.0
- #442 Upgrade Excel Streaming Reader to 5.1.2
-
Enhancements
- #429 Allow info() to read a password protected file
- #433 Data validation: support minimum or maximum date or integer values
- #434 Data validation: allow integer and date inputs to accept a formula
- #435 Data validation: support decimal min/max/range constraints
- #436 Data validation: support text length constraint
- #437 Data validation: support custom constraints using formula
- #438 Data validation: Allow the 'Ignore blanks' or 'Allow empty cells' flag to be turned off
-
Fixes
-
#426 Read() not importing trailing empty columns when headerRow and rows arguments specified
-
Maintenance
- #439 Upgrade Excel Streaming Reader to 5.1.1
- #432 Upgrade Commons CSV to 1.14.1
- Enhancements
- #424 Allow read() to return an array
- #425 Allow read() to return an array of structs
- #423 ReadCSV: remove any BOM from the input file so it is not part of the first row
-
Breaking changes
-
#421 Drop support for Adobe ColdFusion 2018
-
#419 Formula errors no longer cause an exception or return an empty string by default
-
#416 Remove requiresJavaLoader property
-
Enhancements
-
#417 Allow the library jars to be loaded explicitly via application "javaSettings" instead of OSGi or JavaLoader
-
Fixes
-
#420 Fix celltype check on Mac
- Enhancements
- #412 ReadCSV(): Pass column names to row processor and filter UDFs
- #413 ReadCSV(): provide option to process rows as CFML arrays instead of java arrays
- #414 ProcessLargeFile(): Pass header row as columns argument to rowProcessor
-
Enhancements
- #397 Support Adobe ColdFusion 2025
- #395 Add support for column/row grouping
- #396 Add support for column/row breaks
- #398 Add getActiveCell()
- #403 Add recalculateAllFormulas() to update cached values
- #407 Add row/column group collapsing and expansion
- #408 Add getSheetPrintOrientation()
- #409 Add getRecalculateFormulasOnNextOpen()
- #410 Add printOrientation to sheetInfo() properties
- #411 Allow setRecalculateFormulasOnNextOpen() on a specific sheet
-
Fixes
- #401 readLargeFile(): rename streamingReaderOptions argument for brevity and consistency with processLargeFile()
-
Maintenance
- #404 Upgrade POI to 5.4.1
- #405 Upgrade Excel Streaming Reader to 5.0.4
- #406 Upgrade Commons CSV to 1.14.0
- Fixes
- #399 hideSheet() and unhideSheet() should not require the sheet to be specified, and default to the currently active sheet
- #400 Allow hideSheet() and unhideSheet() to specify the sheet number positionally
- Enhancements
- #394 Add hideSheet() and unhideSheet()
- Enhancements
- #392 Add processLargeFile() method to process large XLSX files without reading the entire data into memory
- Enhancements
- #297 readLargeFile() now works on ACF
Fixes:
- #389 Faulty timezone check causes performance issues when handling date/time values in Lucee
- #390 Improve performance around date value handling
-
Enhancements
- #383 Support java class loading via a dynamic path and improve configurability
- #384 Add java version to getEnvironment() details
- Experimental and only partial support for BoxLang
-
Maintenance
- #385 Upgrade POI to 5.4.0
- #386 Upgrade commons-csv to 1.12.0
- #388 Upgrade excel-streaming-reader to 5.0.3
- Fix: #377 AddRows() should not convert empty values to zeros when they are in a numeric typed query column
-
Enhancements
- #373 Allow datatype to be specified with addColumn()
- #374 Rename setCellValue() "type" argument to "datatype" for consistency
-
Maintenance -#375 Upgrade excel-streaming-reader to 5.0.2
- Maintenance -#372 Upgrade POI to 5.3.0, commons-csv to 1.11.0 and excel-streaming-reader to 4.4.0
-
Enhancements
- #369 Add moveSheet()
- #370 Add sheet position to sheetInfo() properties
-
Maintenance -#371 Upgrade excel-streaming-reader to 4.3.1
-
Breaking changes
- #325 Drop support for ACF2016
- #359 Library should default to returning cached cell formula values instead of always recalculating
-
Enhancements
- #358 Allow control of whether to return cached or freshly calculated formula values
- #354 Add getCellAddress() to return a cell's alphanumeric reference
- #364 Support integer range validation
- #356 Support date range validation
- #363 Add option to allow New() to default to creating an XLSX (XML) spreadsheet object
-
Enhancements -#346 Add writeCsv()
-
Fixes -#347/#348 Avoid Perl/Java regex engine incompatibilities
-
Maintenance -#349 Upgrade POI to 5.2.5 -#350 Upgrade excel-streaming-reader to 4.2.1
- #345 readCsv(): Commons CSV boolean options should default to true
-
Enhancements
- #343 Improve csvToQuery() performance
- #340 Add readCsv() for large file/advanced csv processing
- #336 Add parallelization option to queryToCsv()
-
Fixes
- #339 csvToQuery() ignores trim setting when reading from file
-
Maintenance
- #344 Upgrade excel-streaming-reader to 4.2.0
-
Maintenance
- #334 Upgrade POI to 5.2.4 and excel-streaming-reader to 4.1.2
- #324 Upgrade Commons CSV to 1.10.0
-
Enhancements
- #331 Allow custom date formats to be set on an instance post-init()
- #328 Improve exception message when setRowHeight() is used with a non-existent row
-
Enhancements
- #321 Add createJavaObject() to support creating POI and other objects from the bundled jars
- #323 Add basic support for conditional formatting
-
Fixes
- #322 Some values are not converted to hyperlinks when using URL datatype
- #320 Avoid cellStyle duplication when formatting cells from a struct over multiple calls
-
Enhancements
- #316 Support new override data types: url, email and file to auto-create hyperlinks when adding data
- #318 Allow the format argument of formatting methods to be a re-usable cellStyle object instead of a struct
-
Fixes
- #317 setCellHyperlink() should re-use a single cell style over multiple calls by default
-
Maintenance
- #319 Upgrade excel-streaming-reader to 4.0.5
- #313 queryToCsv() should not treat date strings in the data as date objects to be formatted
- #312 Move hosted files to forgebox, github is blocking download access preventing box install
- #311 Regression: csvToQuery() no longer works when file path is VFS
-
Enhancements
- #304 Improve csvToQuery() performance
- #308 Add option to return visible or raw value from getCellValue()
- #309 Add option to return visible values from read() and readLargeFile()
-
Fixes
- #306 Chainable read() method should return the data if format specified
- #307 getCellFormat() throws error if XLSX cellFont has no colour value
-
#310 Upgrade excel-streaming-reader to 4.0.4
- #301 DataValidation has incorrect values if pulled from a sheet name which includes a space
- Enhancements
- #300 Add support for creating DataValidation dropdowns
- #298 Upgrade POI to 5.2.3
- #299 Upgrade excel-streaming-reader to 4.0.2
- Enhancements
- #291 Speed improvement for getAllSheetFormulas()
- #293 Add includeHiddenRows option to read()
- #296 Add readLargeFile()
- #289 Prevent one-off OSGi bundle errors when the bundle version changes
- #290 Upgrade POI to 5.2.2
- #288 sheetInfo() should default to the currently active sheet, not the first
- #287 Upgrade POI to 5.2.1
-
Enhancements
- #286 Add sheetInfo() to return metadata for a specific sheet within a workbook
-
Fixes
- #283 Mismatched system/Lucee timezones causes read() to offset date values
- #285 read() should use the first visible sheet in the workbook if no sheet is specified, ignoring hidden sheets
- #282 Upgrade POI to 5.2.0
- Security Update
- #279 Upgrade log4j to 2.17.1
- #280 Fix: formatRows() errors if range specified is a single row
- Security Update
- #279 Upgrade log4j to 2.17.0
- Fixes
- #277 Date format initialization doesn't work in Lucee with full null support
- #278 Adding header/footer images throws error with null support enabled
- Security Update
- #276 Upgrade log4j to 2.16.0
-
Security Update
- #273 Upgrade log4j to 2.15.0
-
Enhancements
- #268 Allow row/column ranges specified for read(), deleteColumns(), deleteRows(), formatColumns() and formatRows() to be open-ended
- #274 Allow flushOsgiBundle() to flush a specified version
-
Fixes
- #272 Read() not importing trailing empty columns
-
Enhancements
- #266 Upgrade POI to 5.1.0
- #261 Update commons-csv to 1.9.0
-
Fixes
- #260 Chainable getCellComments() should return an array
- #262 Handle incorrect date value setting when Lucee timezone does not match system timezone
- #253 Fix autoSizeColumns not being applied to all columns when adding rows to streaming xlsx workbooks
- #263 Fix read() error if headerRow is specified and spreadsheet is empty
- #265 read( format="query" ) should auto-generate column names where too few column names are specified
-
Breaking changes
- Rename project "spreadsheet-cfml"
-
Enhancements
- #258 Add support for chainable operations on a workbook
- #257 Add getLastRowNumber()
- #254 Allow chaining of methods returning void
-
Fixes
- #259 Fix error with addSplitPane
- #256 Improve performance of autoSizeColumns on addRows() when data is an array
- Enhancements
- #251 Add makeColumnNamesSafe option to read() and csvToQuery()
- #252 Allow WriteToCSV to exclude the workbook's header row
-
Enhancements
- #248 Add autoSizeColumns option to
workbookFromQuery() - #246 Add
isCsvOrTextFilesupport for .tsv files
- #248 Add autoSizeColumns option to
-
Fixes
- #250 Multi-cell formatting methods throw invalid arguments exception if overwriteCurrentStyle is set to false
-
Enhancements
- #240 Add setActiveCell()
- #238 Add setRecalculateFormulasOnNextOpen()
-
Fixes
- #243 Handle null returned from getXSSFColor()
- #242 Ensure HeaderImageVML java is compiled for Java 1.8
- #237 AddColumn() with startColumn and insert=true replaces the existing column instead of inserting after it
- #236 Regression: getCellFormula should not error if cell is specified but doesn't exist
-
Enhancements
- #231 Add setCellHyperLink() and getCellHyperLink()
- #101 Add setHeaderImage() and setFooterImage()
-
Fixes
- #235 Fix missing semi-colon in setActiveSheetNameOrNumber()
- #233 Using "overwriteCurrentStyle=false" and a pre-built cellStyle with formatting functions causes the cellStyle to be ignored
- #232 Using "overwriteCurrentStyle=false" with formatting functions causes default cell style to be changed
- Enhancements
- #229 Allow read() and csvToQuery() to accept a default queryColumnType
- #228 Allow read() to accept columnNames as an array as well as a list
- #227 Allow column names to be specified when using csvToQuery()
- #226 Allow query column types to be specified or auto-detected when using csvToQuery()
- Enhancements
- #225 Allow query column types to be specified or auto-detected when reading a spreadsheet into a query
-
Enhancements
- #221 Add queryToCsv() and writeToCsv()
- #218 Add getPOIVersion()
-
Fixes
- #219 dumpPathToClass() doesn't include file path in OSGi
- #222 #223 Column/header names generated by csvToQuery() are in upper case in ACF
- #216 Upgrade POI to 5.0.0
- #217 In Lucee use OSGi to load java classes instead of JavaLoader
- Enhancements
- #212 Support CSV custom delimiters in read() and downloadCsvFromFile()
- Fixes
- #209 ACF2021: Class not found: org.apache.commons.io.output.ByteArrayOutputStream
- #208 ACF2021: Issue using includes in Testbox suites
- #206 Fix typo in downloadFileFromQuery()
-
Enhancements
- #204 Add public createCellStyle() method
-
Fixes
- #205 Fix and improve handling of tab delimited data handling in csvToQuery()
- #202 Bugfix for isHex regex
- Enhancements
- #201 Prevent ACF from treating "9a" or "9p" as a date/time value
- #200 When adding rows allow default data types to be overridden
- #199 Allow rows generated from queries to ignore the query column data types
- #198 Allow addColumn() to take data as an array
- #197 Add support for valid 6 character hexadecimal colors
-
Enhancements
- #190 Add getCellComments() as alias for getCellComment() with no row/column specified
- #188 Allow addAutoFilter to accept a row number instead of a cell range
- #187 Allow addAutoFilter to default to the first row
-
Fixes
- #194 setCellComment() with underline throws exception on ACF
- #193 Prevent setCellComment() throwing an exception on XLSX when unsupported styles are set
- #191 setCellComment() throws exception on XLSX
- #189 Row and column number values missing from getCellComment() structs when all returned from sheet
- #109 Write encryption doesn't work on ACF
-
Enhancements
- #186 Add option to formatting methods to preserve existing cell styles
- #184 Add support for DATETIME and DATETIME2 (MSSQL) database column types
-
Fixes
- #185 Time only values do not respect custom TIME format specifying fractions of a second
-
Enhancements
- #181 Add "INT" to query column formats cast as numeric
- #179 Provide a list of all predefined colours available to formatting methods
-
Fixes
- #182 addInfo() not working with Streaming XLSX
- #178 Color index lookup is using a deprecated enum class
- #175 Upgrade POI to 4.1.2
- #176 Upgrade Apache Commons CSV to 1.8
-
Enhancements
- #174 Add
getColumnWidth()andgetColumnWidthInPixels()
- #174 Add
-
Fixes
- #173 Specifying a custom DATETIME date format mask seems to have no effect
- #172 In ACF query column case and order is not preserved
- #171 Using autoSizeColumns with a Streaming XLSX workbook causes an exception
- #170 Upgrade POI to 4.1.1
- #169 Improve handling of clearly non-date values which Lucee will parse as dates far in the future
- #168 Allow the active sheet's "fit to page" print options to be controlled
- #167 Add support for setting sheet print margins
- #164 Upgrade Apache Commons CSV to 1.6
- #166 Bug fix: autoSizeColumn - key [columnIndex] doesn't exist in argument scope
- #163 Upgrade POI to 4.1.0
- #162 Support decryption of encrypted binary (XLS) spreadsheets. Add support for decryption in ACF.
- DEPRECATED:
engineSupportsEncryptionenvironment key. UseengineSupportsWriteEncryption
- #160
includeQueryColumnNamesinaddRows()produces invalid xlsx
- #159 Support array data argument for
addRow()andaddRows()
- #157
addRows()doesn't apply column offset to header row when usingincludeQueryColumnNames
- #156 Bug in
setActiveSheet().
-
Breaking changes
- #142 Upgrade POI to 4.0.1 which requires Java 8+
- By default, Lucee 5 now uses JavaLoader instead of
CreateObject - #148 Remove the
engineSupportsDynamicClassLoadingvariable completely, since it is meaningless - Remove Lucee 4.5 and ACF11 support: Lucee 5 and ACF2016 are the minimum supported versions
-
Enhancements
- #155 Add support for the SXSSF streaming XML format for writing large files
- #136 Upgrade Apache Commons CSV to version 1.5
- Improve
write()outputstream locking. - Add
dumpPathToClass()diagnostic tool - Separate encryption/decryption components no longer needed with POI 4
-
Fixes
- Various fixes to support POI 4.x
- #150 Rewrite xlsx encryption to ensure the encrypted stream is closed
- Use array
append()BIF instead of javaadd() - Fix failing
setCellValue()test on ACF2016+ - #154 Using RGB triplet as a colour format with XLSX not working in ACF
- Fixes
- #153 Handling of hidden columns fails in ACF2016
- #152 Testbox should be specified as a CommandBox installation dev dependency
- Fixes
- #139 Cell type auto-detection throws error if boolean value is blank or null
- Fixes
- #138 Reading a spreadsheet with column header names containing commas into a query results in too many columns
- #134 Upgrade POI to 3.17
- Fixes
- #130 JavaLoader should not need
loadColdFusionClassPathsetting (add commons-codec jar to lib)
- #130 JavaLoader should not need
- Enhancements:
- #129 Add
getRowCount()
- #129 Add
- Fixes
- #128 Adding date query cells with blank values causes error
- Enhancements
- #125 Add
addAutofilter() - #126 Add
addPageBreaks() - #127 Add
addPrintGridlines()andremovePrintGuidelines()
- #125 Add
- Fixes
- #124 Handle "indent" format values greater than 15 in xls
- #123 Underline value returned by
getCellFormat()should be a descriptive string - Fix unreturned cellStyle when invalid underline format used.
- Enhancements
- #119 Add
getCellFormat()and formatting tests - #104 Add
quoteprefixedto cell formatting options - #121 Support "double", "single accounting" and "double accounting" underline formats
- #122 Add
hideRow(),showRow()andisRowHidden() - Add
isColumnHidden()and tests forhideColumn()andshowColumn()
- #119 Add
- Fixes
- #120 Setting underline format on ACF fails
- #118 Upgrade POI to 3.16
- Enhancements:
- Rewrite cell data type handling
- #112 Allow data type to be specified when using
setCellValue() - Add
getCellType()
- Fixes:
- #115: Don't auto-detect any incoming values as boolean: allow them to default to strings or numbers, unless a source query column type or data type parameter has set them as bit/boolean
- #116: Prevent certain definitely non-date values being detected as dates
- #117: Allow
csvToQuery()to be called with positional arguments
- Enhancement: #110 Support populating a spreadsheet from CSV data:
- Add
workbookFromCsv() - Add public method
csvToQuery()for convenience
- Add
- Enhancement: #80 Provide option to use POI jars in the java class path instead of via JavaLoader
- Enhancement: #107 Remove the dependency on JavaLoader for Lucee 5 and load POI jars directly
- Enhancement: #108 Officially support ACF11+
- Enhancement: Add
getEnvironment()method to return current environment details/settings
- Update bundled JavaLoader to 1.2
- Fix: #102 Fillpattern formatting not working.
- Fix: #103 Replace deprecated
cellstylesetters. - Enhancement: #106 Allow a file path to be passed to the
info()method instead of a workbook object
- Fix: #100 Replace deprecated 'boldweight' methods and constants with
getBold()/setBold().
- Fix: Tweak argument handling of
setSheetPrintOrientation()to catch errors.
- Enhancement: #99 Add
setSheetPrintOrientation().
- Enhancement: #98 Allow cell format color values to be specified in RBG triplets
- Fix: Refactor
buildCellStyle()to improve performance and fix boolean issue with "bold".
- Enhancement: #97 Add
newXlsx()andnewXls()as aliases fornew( xmlFormat=true/false ) - Fix: #96 Fix error when adding image to xlsx (xml format) spreadsheet
- Fix #95 Change to
readBinary()in 0.8.2 causes MS Excel to crash
- Enhancement: Improve performance of
readBinary()by using java ByteBuffer. - Fix: Update JavaLoader to include post 1.1 release patches to fix #94
- Enhancement: #92 Catch formula errors when reading
- Enhancements:
- #90 Upgrade POI to 3.15
- #91 Allow an existing JavaLoader installation to be used instead of the bundled one.
- Fix #88 When reading a file, warn if the Excel format is too old for POI.
- Fix #87 Invalid color after moving from Lucee 4.5.3 to Lucee 5.0
- Fix #86 Zeros are being interpreted as boolean false by
addRow()and other methods.
- Fix #85
AddRow()causing "maximum number of cell styles was exceeded" error when inserting large number of rows including dates.
- Fix #84
formatColumn()fails when workbook contains more than 4000 rows
- Fix
isSpreadsheetFile()not working in ACF for non-spreadsheet files.
- Enhancements:
- #83 Add
isSpreadsheetFile()andisSpreadsheetObject()
- #83 Add
- More ACF compatibility fixes
- Drop use of
thisscope for internal method calls - Drop unnecessary
ExpandPath()when getting POI jar paths for JavaLoader - Another missing colon at EOL
- Drop use of
- Updates to test suite for case-sensitive filesystems
- More ACF compatibility fixes
- Move all private methods from includes to within the body of Spreadsheet.cfc
- Another missing colon at EOL
- Use compatible script syntax for downloads
- Variable name being used twice for different purposes
- Fixes (preventing use with ACF):
- Missing colons at EOL
- Throw attribute typo
- Enhancements:
- #76 Upgrade POI to 3.14
- #77 Add
getColumnCount()
- Better exception message when adding too many rows to a binary spreadsheet.
- Better exception message when
read()srcfile is not a spreadsheet. - Make final closing of java streams dependent on existence of stream variable to prevent embedded exceptions.
- Enhancements:
- #70 Support reading encrypted XML files (only) using supplied password
- Better file handling when encrypting files
- Enhancements:
- #73 Allow encryption algorithm to be specified when writing password protected workbooks
- Fixes:
- #71 and #72 Adjust tests to support TestBox 2.2
- Enhancements:
- #69 Add explicit
setReadOnly()method for binary workbooks (only)
- #69 Add explicit
- Fixes:
- #68 Supplying a password to
write()provides whole file encryption for XML spreadsheet files (only)
- #68 Supplying a password to
- Enhancements:
- #66 Add
setRepeatingColumns()andsetRepeatingRows()
- #66 Add
- Enhancements:
- #65 Upgrade POI to 3.13.
- #64 Add
download()function for an existing workbook object. - #63 Add
includeQueryColumnNamesoption toAddRows().
- Improve performance of
read()by using native Java concatenation instead of arrays which are slow in Lucee.
- REMOVED:
- #61 Support for font family and size with
read()andincludeRichTextFormattingwhen different from the cell's base font. Better to be consistent and not support these attributes anywhere so the expectation is clear.
- Enhancements:
- #61 Support font family and size with
read()andincludeRichTextFormattingwhen different from the cell's base font - Bug fixes:
- #60
includeRichTextFormattingoption inread()results in empty span style if format not supported
- Enhancements:
- #57 Add
includeRichTextFormattingoption toread()
- Enhancements:
- #56 Add extra argument to
read()to allow excluding hidden columns - #58 Add
hideColumn()andshowColumn()
- Enhancements:
- #52 Add csv format support to
read() - #55 Allow csv file to be downloaded from a spreadsheet file
- Enhancements:
- #43 Add html format support to
read(). - #54 Allow default date formats to be overridden
- Bug fixes:
- #53 Fix incorrect formatter reference when evaluating formula cells.
- Enhancements:
- #44 Support reading specified row or column ranges
- #45 Support being able to specify the column names when reading a spreadsheet from file
- Bug fix:
- #51 Empty cells are skipped when reading a spreadsheet into a query.
- Upgrade POI to 3.12
- Enhancements:
- #47 Add
fillMergedCellsWithVisibleValueoption toread() - #48 Add
setCellRangeValue() - #49 Add
emptyInvisibleCellsoption tomergeCells()
- #47 Add
- Bug fixes:
- Fix read() includeBlankRows=false option only suppressing null rows and not empty ones
- Missing var declarations
- Bug fix:
- POI Loader server variable name should be unique to the current library path
- Breaking changes
- Use "freeze" instead of "split" for argument names of addFreezePane
- Breaking changes
- #27 Drop
deleteSheet[Number]()in favour ofremoveSheet[Number]()
- #27 Drop
- Bug fixes:
- #25 Font values not being applied
- #40 Ensure non-string data types (numeric, date, boolean) are respected when processing cells
- Enhancements:
- #17 Add
setActiveSheetNumber() - #18 Add
formatRows() - #19 Support reading sheets by name
- #20 Add
deleteRows() - #21 Add
deleteColumn()anddeleteColumns() - #22 Add
shiftColumns() - #23 Add
getCellValue()andsetCellValue() - #24 Add
formatColumn(),formatColumns()andformatCellRange() - #23 Add
isBinaryFormat()andisXmlFormat() - #28 Add
mergeCells() - #29 Add
addFreezePane()andaddSplitPane() - #30 Add
addInfo()andinfo() - #31 Add
setCellFormula()andgetCellFormula() - #34 Add
setColumnWidth() - #35 Add
setRowHeight() - #36 Add
setHeader()andsetFooter() - #33 Add
setCellComment()andgetCellComment() - #32 Add
addImage() - #37 Add
autoSizeColumn() - #41 Add option to auto size columns when using addColumn, addRow and addRow
- #39 Add
renameSheet() - #38 Add
clearCell()andclearCellRange()
- #17 Add
- Breaking changes
read()methodsheetargument should now besheetNumber(for consistency)- When specifying 1-based sheet numbers as arguments, always use
sheetNumber(notsheetorsheetIndex). - When specifying sheet names as arguments, use
sheetName, notsheet. - Enhancements
- #13 Add support for
createSheet() - #14 Add support for
removeSheet() - #15 Add
deleteSheet()which can delete a sheet by name or number
- Bug fixes:
- Treat null rows/cells as blank not null
- #5
new()method ignores xmlFormat argument - #6
ShiftRowsoffset argument misspel - #7
ShiftRowscalls require workbook as argumen - #8
AddRowinsert argument not working - #10 Cannot read XLSX files
- #11
Readmethod errors if no format specified. Should return workbook object - Enhancements:
- #2 Testbox BDD style test suite
- #3 Upgrade POI to 3.11
- #3 Option to include blank rows when reading into a query
- #4 Simplify dependencies by including tools and formatting as mixins
- #9
writeFileFromQuery(): detect if xml from file extension - #12 Change ACF
excludeHeaderRowdefault=false toincludeHeaderRow, default=false
readmethod- changed radically to work under Lucee. Some attributes/functionality disabled for now, but can return a query or workbook object.
- changed
excludeHeaderRowdefault from false to true
- Added
flushPoiLoaderutility method
- Added
writemethod matchingSpreadSheetWrite()writeFileFromQuerycustom method
- Workbook creation separated from instantiation. Create a workbook using
new()and then pass it to other functions. Same as ACF functions. - Use JavaLoader to load newer POI jars to allow support for
read() - Added methods
newread(matchescfspreadsheet action="read")setActiveSheet
- Added custom method:
downloadFileFromQuery
- Initial release with support for the following standard CFML functions only:
addColumnaddRowaddRowsdeleteRowformatCellformatRowshiftRowsreadBinary
- Custom method:
binaryFromQuery