History of Changes
45410 - Removed dependency from contrib on commons beanutils,collections and lang
New helper, HSSFOptimiser, which handles removing duplicated font and style records, to avoid going over the limits in Excel
45322 - Fixed NPE in HSSFSheet.autoSizeColumn() when cell number format was not found
45380 - Missing return keyword in ArrayPtg.toFormulaString()
44958 - Record level support for Data Tables. (No formula parser support though)
35583 - Include a version class, org.apache.poi.Version, to allow easy introspection of the POI version
Allow the cloning of one HSSFCellStyle onto another, including cloning styles from one HSSFWorkbook onto another
45289 - finished support for special comparison operators in COUNTIF
45126 - Avoid generating multiple NamedRanges with the same name, which Excel dislikes
Fix cell.getRichStringCellValue() for formula cells with string results
45365 - Handle more excel number formatting rules in FormatTrackingHSSFListener / XLS2CSVmra
45373 - Improve the performance of HSSFSheet.shiftRows
45367 - Fixed bug when last row removed from sheet is row zero
45348 - Tweaks to RVA formula logic
45354 - Fixed recognition of named ranges within formulas
45338 - Fix HSSFWorkbook to give you the same HSSFFont every time, and then fix it to find newly added fonts
45336 - Fix HSSFColor.getTripletHash()
45334 - Fixed formula parser to handle dots in identifiers
45252 - Improvement for HWPF Range.replaceText()
45001 - Further fix for HWPF Range.delete() and unicode characters
45175 - Support for variable length operands in org.apache.poi.hwpf.sprm.SprmOperation
Avoid spurious missing lines with the MissingRecordAware event code, and odd files that contain RowRecords in the middle of the cell Records.
Support for parsing formulas during EventUserModel processing, via the new EventWorkbookBuilder
30978 - Fixed re-serialization of tRefErr3d and tAreaErr3d
45234 - Removed incorrect shared formula conversion in CFRuleRecord
45001 - Improved HWPF Range.replaceText()
44692 - Fixed HSSFPicture.resize() to properly resize pictures if the underlying columns/rows have modified size
Support custom image renderers in HSLF
Correctly increment the reference count of a blip when a picture is inserted
45110 - Fixed TextShape.resizeToFitText() to properly resize TextShape
45091 - Fixed serialization of RefN~ tokens. Simplified Ptg class hierarchy
45133 - Fixed OBJ Record (5Dh) to pad the sub-record data to a 4-byte boundary
45145 - Fixed Sheet to always enforce RowRecordsAggregate before ValueRecordsAggregate
45123 - Fixed SharedFormulaRecord.convertSharedFormulas() to propagate token operand classes
45087 - Correctly detect date formats like [Black]YYYY as being date based
45060 - Improved token class transformation during formula parsing
44840 - Improved handling of HSSFObjectData, especially for entries with data held not in POIFS
45043 - Support for getting excel cell comments when extracting text
Extend the support for specifying a policy to HSSF on missing / blank cells when fetching, to be able to specify the policy at the HSSFWorkbook level
45025 - improved FormulaParser parse error messages
45046 - allowed EXTERNALBOOK(0x01AE) to be optional in the LinkTable
45066 - fixed sheet encoding size mismatch problems
45003 - Support embeded HDGF visio documents
45001 - Partial fix for HWPF Range.insertBefore() and Range.delete() with unicode characters
44977 - Support for AM/PM in excel date formats
Support for specifying a policy to HSSF on missing / blank cells when fetching
44937 - Partial support for extracting Escher images from HWPF files
44824 - Avoid an infinite loop when reading some HWPF pictures
44898 - Correctly handle short last blocks in POIFS
44306 - fixed reading/writing of AttrPtg(type=choose) and method toFormulaString() for CHOOSE formulas
24207 - added HSSFName.isDeleted() to check if the name points to cell that no longer exists
40414 - fixed selected/active sheet after removing sheet from workbook
44523 - fixed workbook sheet selection and focus
45000 - Fixed NPE in ListLevel when numberText is null
44985 - Properly update TextSpecInfoAtom when the parent text is changed
41187 - fixed HSSFSheet to properly read xls files without ROW records
44950 - fixed HSSFFormulaEvaluator.evaluateInCell() and Area3DEval.getValue() also added validation for number of elements in AreaEvals
42570 - fixed LabelRecord to use empty string instead of null when the length is zero.
42564 - fixed ArrayPtg to use ConstantValueParser. Fixed a few other ArrayPtg encoding issues.
Follow-on from 28754 - StringPtg.toFormulaString() should escape double quotes
44929 - Improved error handling in HSSFWorkbook when attempting to read a BIFF5 file
44675 - Parameter operand classes (function metadata) required to encode SUM() etc properly. Added parse validation for number of parameters
44921 - allow Ptg.writeBytes() to be called on relative ref Ptgs (RefN* and AreaN*)
44914 - Fix/suppress warning message "WARN. Unread n bytes of record 0xNN"
44892 - made HSSFWorkbook.getSheet(String) case insensitive
44886] - Correctly process PICT metafile in EscherMetafileBlip
44893 - Take into account indentation in HSSFSheet.autoSizeColumn
44857 - Avoid OOM on unknown escher records when EscherMetafileBlip is incorrect
HSLF: Support for getting embedded sounds from slide show
HSLF: Initial support for rendering slides into images
HSLF: Support for getting OLE object data from slide show
HSLF: Implemented more methods in PPGraphics2D
HSLF: Added Freeform shape which can contain both lines and Bezier curves
41071 - Improved text extraction in HSLF
30311 - Conditional Formatting - improved API, added HSSFSheetConditionalFormatting
Update the formula parser code to use a HSSFWorkbook, rather than the low level model.Workbook, to make things cleaner and make supporting XSSF formulas in future much easier
Fix the logger used by POIFSFileSystem, so that commons-logging isn't required when not used
Update HSLFSlideShow and HSSFWorkbook to take advantage of POIFS updates, and allow reading embeded documents
Improve how POIFS works with directory entries, and update HWPFDocument to support reading an embeded word document
Initial support for getting and changing chart and series titles
Implement a proxy HSSFListener which tracks the format records, and lets you lookup the format string for a given cell. Convert the xls to csv example to use it
44792 - fixed encode/decode problems in ExternalNameRecord and CRNRecord.
43670, 44501 - Fix how HDGF deals with trailing data in the list of chunk headers
30311 - More work on Conditional Formatting
refactored all junits' usage of HSSF.testdata.path to one place
44739 - Small fixes for conditional formatting (regions with max row/col index)
Implement Sheet.removeShape(Shape shape) in HSLF
44694 - HPSF: Support for property sets without sections
Various fixes: Recognising var-arg built-in functions #44675, ExternalNameRecord serialisation bug #44695, PMT() bug #44691
30311 - More work on Conditional Formatting
Move the Formula Evaluator code out of scratchpad
Move the missing record aware eventusermodel code out of scratchpad
44652 / 44603 - Improved handling of Pictures in Word Documents
44636 - Fix formula parsing of RefVPtg, which was causing #VALUE to be shown on subsequent edits
44627 - Improve the thread safety of POILogFactory
30311 - Initial support for Conditional Formatting
44609 - Handle leading spaces in formulas, such as '= 4'
44608 - Support for PercentPtg in the formula evaluator
44606 - Support calculated string values for evaluated formulas
Add accessors to horizontal and vertical alignment in HSSFTextbox
44593 - Improved handling of short DVRecords
28627 / 44580 - Fix Range.delete() in HWPF
44539 - Support for area references in formulas of rows >= 32768
44536 - Improved support for detecting read-only recommended files
43901 - Correctly update the internal last cell number when adding and removing cells (previously sometimes off-by-one)
28231 - For apparently truncated files, which are somehow still valid, now issue a truncation warning but carry on, rather than giving an exception as before
44504 - Added initial support for recognising external functions like YEARFRAC and ISEVEN (using NameXPtg), via LinkTable support
44504 - Improvements to FormulaParser - operators, precedence, error literals, quotes in string literals, range checking on IntPtg, formulas with extra un-parsed stuff at the end, improved parse error handling
44504 - Fixed number conversion inconsistencies in many functions, and improved RefEval
44508 - Fix formula evaluation with evaluateInCell on boolean formulas
44510 - Fix how DVALRecord works with dropdowns
44495 - Handle named cell ranges in formulas that have lower case parts
44491 - Don't have the new-style "HPSF properties are always available" affect the old-style use of HPSF alongside HSSF
44471 - Crystal Reports generates files with short StyleRecords, which isn't allowed in the spec. Work around this
44450 - Support for Lookup, HLookup and VLookup functions
44449 - Avoid getting confused when two sheets have shared formulas for the same areas, and when the shared formula is set incorrectly
44366 - InputStreams passed to POIFSFileSystem are now automatically closed. A warning is generated for people who might've relied on them not being closed before, and a wrapper to restore the old behaviour is supplied
44371 - Support for the Offset function
38921 - Have HSSFPalette.findSimilar() work properly
44456 - Fix the contrib SViewer / SViewerPanel to not fail on sheets with missing rows
44403 - Further support for unusual, but valid, arguments to the Mid function
44410 - Support for whole-column ranges, such as C:C, in formula strings and the formula evaluator
44421 - Update Match function to properly support Area references
44417 - Improved handling of references for the need to quote the sheet name for some formulas, but not when fetching a sheet by name
44413 - Fix for circular references in INDEX, OFFSET, VLOOKUP formulas, where a cell is actually allowed to reference itself
44403 - Fix for Mid function handling its arguments wrong
44364 - Support for Match, NA and SumProduct functions, as well as initial function error support
44375 - Cope with a broken dictionary in Document Summary Information stream. RuntimeExceptions that occured when trying to read bogus data are now caught. Dictionary entries up to but not including the bogus one are preserved, the rest is ignored.
38641 - Handle timezones better with cell.setCellValue(Calendar), so now 20:00-03:00, 20:00+00:00 and 20:00+03:00 will all be recorded as 20:00, and not 17:00 / 20:00 / 23:00 (pass a Date not a Calendar for old behaviour)
44373 - Have HSSFDateUtil.isADateFormat recognize more formats as being dates
37923 - Support for Excel hyperlinks
Implement hashCode() and equals(obj) on HSSFFont and HSSFCellStyle
44345 - Implement CountA, CountIf, Index, Rows and Columns functions
44336 - Properly escape sheet names as required when figuring out the text of formulas
44326 - Improvements to how SystemOutLogger and CommonsLogger log messages with exceptions, and avoid an infinite loop with certain log messages with exceptions
Support for a completed Record based "pull" stream, via org.apache.poi.hssf.eventusermodel.HSSFRecordStream, to complement the existing "push" Event User Model listener stuff
44297 - IntPtg must operate with unsigned short. Reading signed short results in incorrect formula calculation
44296 - Fix for reading slide background images
44293 - Avoid swapping AreaPtgs from relative to absolute
44292 - Correctly process the last paragraph in a word file
44254 - Avoid some unread byte warnings, and properly understand DVALRecord
Add another formula evaluation method, evaluateFormulaCell(cell), which will re-calculate the value for a formula, without affecting the formula itself.
41726 - Fix how we handle signed cell offsets in relative areas and references
44233 - Support for getting and setting a flag on the sheet, which tells excel to re-calculate all formulas on it at next reload
44201 - Enable cloning of sheets with data validation rules
44200 - Enable cloning of sheets with notes
43008 - Add a moveCell method to HSSFRow, and deprecate setCellNum(), which didn't update things properly
43058 - Support setting row grouping on files from CR IX, which lack GutsRecords
31795 - Support cloning of sheets with certain drawing objects on them
43902 - Don't consider merged regions when auto-sizing columns
42464 - Avoid "Expected ExpPtg to be converted from Shared to Non-Shared Formula" on large, formula heavy worksheets
42033 - Add support for named ranges with unicode names
34023 - When shifting rows, update formulas on that sheet to point to the new location of those rows
Support getting all the cells referenced by an AreaReference, not just the corner ones
43510 - Add support for named ranges in formulas, including non-contiguous named ranges
43937 - Add support for hiding and un-hiding sheets, and checking their current hidden status
44167 - Fix for non-contiguous named ranges
44070 - Fix for shifting comments when shifting rows
Support for tables in HSLF
43781 - Fix for extracting text from TextBoxes HSLF in
Improve JavaDocs relating to hssf font and fill colourings
44095, 44097, 44099 - [PATCH] Support for Mid, Replace and Substitute excel functions
44055 - [PATCH] Support for getting the from field from HSMF messages
43551 - [PATCH] Support for 1904 date windowing in HSSF (previously only supported 1900 date windowing)
41064 - [PATCH] Support for String continue records
27511 - [PATCH] Support for data validation, via DVRecord and DVALRecord
43877 and 39512 - Fix for handling mixed OBJ and CONTINUE records.
43807 - Throw an IllegalArgumentException if asked to create a merged region with invalid columns or rows, rather than writing out a corrupt file
43837 - [PATCH] Support for unicode NameRecords
43721 - [PATCH] Support for Chart Title Format records
42794 - [PATCH] Fix for BOF records from things like Access
43648 - Fix for IntPtg and short vs int
43751 - [PATCH] - Fix for handling rotated text in HSSFSheet.autoSizeColumn
Include an Excel text extractor, and put all existing text extractors under a common superclass
Improvements to the LZW compression engine used by HDGF
HSSFPicture.resize() - a handy method to reset a picture to its original width and height
Add a getSheetIndex(HSSFSheet) method to HSSFWorkbook, and allow a HSSFSheet to get at its parent HSSFWorkbook
Move POIDocument out of Scratchpad, and update HSSFWorkbook to use it
43399 - [PATCH] - Fix for Cell References for rows > 32678
43410 - [PATCH] - Improved Formula Parser support for numbers and ranges
When writing HSLF files out, optionally preserve all OLE2 nodes (default is just the HSLF related nodes)
43323 - [PATCH] - Support for adding Pictures to ShapeGroups in HSLF.
43222 - [PATCH] - Support for getting OLE object data from HSSFWorkbook.
43247 - [PATCH] - Support for getting OLE object data from slideshows.
43125 - [PATCH] - Support for reading EMF, WMF and PICT images via HSSFWorkbook.getAllPictures()
43088 - [PATCH] - Fix for reading files with long cell comments and text boxes
42844 - [PATCH] - Fix for the EventUserModel and records that aren't immediately followed by their ContinueRecords
43055 - [PATCH] - Fix for saving Crystal Reports xls files when preserving nodes
43116 - [PATCH] - Fix for Escher layer handling of embeded OLE2 documents
43108 - [PATCH] - Where permissions deny fetching System Properties, use sensible defaults
43093 - [PATCH] - Fix formula evaluator support for Area3D references to other sheets
Improvements to HSSFDateUtils.isADateFormat, and have HSSFDateUtil.isCellDateFormatted use this
42999 - [PATCH] - Fix for HSSFPatriarch positioning problems
Support for write-protecting a HSSF workbook
Support for querying, setting and un-setting protection on sheets in a HSSF workbook
Initial HSMF (outlook) support
Tidy up the javadocs
Administrative updates to the Maven POMs, and the release artificat build process
23951 - [PATCH] Fix for HSSF setSheetOrder and tab names
42524 - [PATCH] Better HSLF support for problem shape groups
42520 - [PATCH] Better HSLF support for corrupt picture records
Initial support for a "missing record aware" HSSF event model
Additional HSLF support for Title and Slide Master Sheets
42474 - [PATCH] Improved HSLF note to slide matching, and a NPE
42481 - [PATCH] Tweak some HSLF exceptions, to make it clearer what you're catching
42667 - [PATCH] Fix for HSLF writing of files with tables
Improved way of detecting HSSF cells that contain dates, isADateFormat
Initial, read-only support for Visio documents, as HDGF
39977 - [PATCH] Fix POM for Maven users
38976 - [PATCH] Add createPicture to HSSFShapeGroup
Detect Office 2007 XML documents, and throw a meaningful exception
Additional HSLF support for PowerPoint
Initial support for HWPF image extraction
Additional HSLF support for PowerPoint
HSSF Formula support
Additional HSLF support for PowerPoint
39389 - [PATCH] Extended Ascii support for WingDings
Bugzilla Bug 29976 [PATCH] HSSF hyperlink formula size problem
Image writing support
HSLF - Initial PowerPoint support
Outlining support
27574 - [PATCH] HSSFDateUtil.getExcelDate() is one hour off when DST changes
26465 - [PATCH] wrong lastrow entry
28203 - [PATCH] Unable to open read-write excel file including forms
Add support for the Escher file format
27005 java.lang.IndexOutOfBoundsException during Workbook.cloneSheet()
No changes
Bug 25695 - HSSFCell.getStringCellValue() on cell which has string formula will return swap bye unicode characters.
Updated website for upcoming release
Formula Parser fixes with tests, by Peter M Murray Bug 25457
Fixed cloning merge regions
The cloned reference for merged cells did not create a new collection, so deletes cascaded to the original.
Fix to 24519 call to getCustomPalette() from a newly created workbook now works
Fix supplied for bug 24397 where some compilation got ambiguous classes. Explicitly imports the classes. Patch supplied by Jean-Pierre Paris.
12561 (Min) HSSFWorkbook throws Exceptions
12730 (Nor) values dont get copied to another sheet.
13224 (Maj) Exception thrown when cell has =Names call
13796 (Nor) Error Reading Formula Record (optimized if, external link)
13921 (Nor) Sheet name cannot exceed 31 characters and cannot contain :
14330 (Nor) Error reading FormulaRecord
14460 (Nor) Name in Formula - ArrayOutOfBoundsException
15228 (Cri) [Urgent] ArrayIndexoutofbounds Exception. POI - Version 1.8
16488 (Maj) Unable to open written spreadsheet in Excel, but can in Open
16559 (Nor) testCustomPalette.xls crashes Excel 97
16560 (Nor) testBoolErr.xls crashes Excel '97
17374 (Min) HSSFFont - BOLDWEIGHT_NORMAL
18800 (Maj) The sheet made by HSSFWorkbook#cloneSheet() doesn't work cor
18846 (Min) [PATCH][RFE]Refactor the transformation between byte array a
19599 (Min) java.lang.IllegalArgumentException
19961 (Nor) [PATCH] Sheet.getColumnWidth() returns wrong value
21066 (Blo) Can not modify a blank spreadsheet
21444 (Enh) [PATCH] Macro functions
21447 (Nor) [RFE]String Formula Cells
21674 (Enh) [PATCH] Documentation changes for @(Greater|Less|Not)EqualPt
21863 (Enh) [PATCH] build.xml fixes
22195 (Nor) [RFE] [PATCH] Support for Storage Class ID
22742 (Cri) Failed to create HSSFWorkbook!
22922 (Cri) HSSFSheet.shiftRows() throws java.lang.IndexOutOfBoundsExcep
22963 (Nor) org.apache.poi.hpsf.SummaryInformation.getEditTime() should
24149 (Maj) Error passing inputstream to POIFSFileSystem
21722 (Nor) [PATCH] Add a ProtectRecord to Sheets and give control over
9576 (Nor) [PATCH] DBCELL, INDEX EXTSST (was Acess 97 import)
13478 (Blo) [PATCH] [RFE] POIFS, RawDataBlock: Missing workaround for lo
14824 (Nor) Unable to modify empty sheets
12843 (Cri) [PATCH] Make POI handle chinese better
15353 (Nor) [RFE] creating a cell with a hyperlink
15375 (Blo) Post 1.5.1 POI causes spreadsheet to become unopenable.
HPSF is now able to read properties which are given in the property set stream but which don't have a value ("variant" type VT_EMPTY). The getXXX() methods of the PropertySet class return null if their return type is a reference (like a string) or 0 if the return type is numeric. Details about the return types and about how to distinguish between a property value of zero and a property value that is not present can be found in the API documentation.
Gridlines can now be turned on and off
NamePTG refactoring/fixes
minor fixes to ExternSheet and formula strings
Sheet comparisons now ignore case
A nasty concurrency problem has been fixed. Any users working in a multithreaded environment should seriously consider upgrading to this release.
The EXTSST record has been implemented. This record is used by excel for optimized reading of strings.
When rows are shifted, the merged regions now move with them. If a row contains 2 merged cells, the resulting shifted row should have those cells merged as well.
There were some issues when removing merged
regions (specifically, removing all of them and then adding some more) and have been resolved.
When a sheet contained shared formulas (when a formula is
dragged across greater than 6 cells), the clone would fail. We now support cloning of
sheets that contain this Excel optimization.
Support added for reading formulas with UnaryPlus and UnaryMinus operators.
Patch applied for deep cloning of worksheets was provided
Patch applied to allow sheet reordering
Added additional print area setting methods using row/column numbers
HDF: Negative Array size fix
Added argument pointers to support the IF formula
Formulas: Added special character support for string literals, specifically for SUMIF formula support and addresses a bug as well
BlockingInputStream committed to help ensure reads
Fixed problem with NaN values differing from the investigated value from file reads in FormulaRecords
Patch for getColumnWidth in HSSF
Patch for dealing with mult-level numbered lists in HDF
Due to named reference work, several named-ranged bugs were closed
Patch applied to prevent sheet corruption after a template modification
Shared Formulas now Supported
Added GreaterEqual, LessEqual and NotEqual to Formula Parser
Added GreaterThan and LessThan functionality to formulas
Patches for i10n
POI Build System Updated
font names can now be null
Support for zoom level
Freeze and split pane support
Row and column headers on printouts
Custom Data Format Support
Enhanced Unicode Support for Russian and Japanese
Enhanced formula support including read-only for
"optimized if" statements.
Support for cloning objects
Fixes for header/footer
Spanish Documentation translations
Support for preserving VBA macros
Removed runtime dependency on commons logging.
Formula support
Removed depedency on commons logging. Now define poi.logging system property to enable logging to standard out.
Fixed SST string handling so that spreadsheets with rich text or extended text will be read correctly.
New project build.
New project documentation system based on Cocoon.
Package rename
Various bug fixes
Early stages of HSF development (not ready for development)
Initial low level record support for charting (not complete)
Created new event model
Optimizations made to HSSF including aggregate records for
values, rows, etc.
predictive sizing, offset based writing (instead of lots of
array copies)
minor re-factoring and bug fixes.
Minor documentation updates.
Added DataFormat helper class and exposed set and get format
on HSSFCellStyle
Fixed column width apis (unit wise) and various javadoc on
the subject
Fix for Dimensions record (again)... (one of these days I'll
write a unit test for this ;-p).
Some optimization on sheet creation.
Changes not recorded.
Added MulBlank, Blank, ColInfo
Added log4j facility and removed all sys.out type logging
Added support for adding font's, styles and corresponding
high level api for styling cells
added support for changing row height, cell width and default
row height/cell width.
Added fixes for internationalization (UTF-16 should work now
from HSSFCell.setStringValue, etc when the encoding is set)
added support for adding/removing and naming sheets.
Bugfix release. We were throwing an exception when reading
RKRecord objects.
Got continuation records to work (read/write)
Added various pre-support for formulas
Massive API reorganization, repackaging.
BiffViewer class added for validating HSSF & POI and/or
HSSF Output.
Better API support for modification.
Added encoding flag to high and low level api to use utf-16
when needed (HSSFCell.setEncoding())
added read only support for Label records (which are
reinterpreted as LabelSST when written)
Broken continuation record implementation (oops)
BiffViewer class added for validating HSSF & POI and/or
HSSF Output.
Support for read/write and modify.
Read only support for MulRK records (converted to Number when
writing)