History of Changes
Previous releases
The change log for POI 3.x and older releases can be found in the history section.
Version 5.0.0 (2021-01-19)
Summary
- Upgrade to ECMA-376 5th edition (transitional) schemas - expect API breaks when using XmlBeans directly
 - Change artifact names of poi-/ooxml-schemas to poi-ooxml-lite/full
 - Upgrade to XMLSec 2.2.0
 - updated dependencies to Bouncycastle 1.67, Commons-Codec 1.15, Commons-Compress 1.20
 - XWPF - improvements in table and paragraph
 - XSLF - improvements for paragraph
 - provide JigSaw modules
 - removed dependencies to jaxb
 - removed deprecated code
 - ooxml-security is part of poi-ooxml-full (known as ooxml-schemas) now and won't be provided separately
 - new experimental DeferredSXSSFWorkbook which avoids temp files by lazily generating rows (see DeferredGeneration in poi-examples)
 
Changes
| Type | Bug | Module | Description | 
|---|---|---|---|
![]()  | SS_Common | SS method to check if a Named Range is hidden or not | |
![]()  | github-167 | HSMF | HSMF enhancements - NamedIdChunk, MultiValueChunks, ByteChunkDeferred | 
![]()  | SS_Common | Fix incorrect handling of format which should not produce any digit for zero | |
![]()  | 58896 52834 | SS_Common | Speed up auto-sizing of columns when the sheet contains merged regions | 
![]()  | 64186 | OPC | Decrease usage of ThreadLocals in XML Signature API | 
![]()  | 64213 | SS_Common | Picture.resize(double scale) scales width wrong for small pictures and when dx1 is set | 
![]()  | 63712 | OPC | upgrading xmlsec causes junit tests to fail | 
![]()  | 64241 | XSLF | XSLF - Wrong scheme colors used when rendering | 
![]()  | 63624 | XWPF | Method setText in XWPFTableCell updates the xml and also updates the runs and iruns | 
![]()  | github-170 | XWPF | XWPFTableCell does not process bodyElements when handle paragraph | 
![]()  | github-171 | XWPF | XWPFNumbering.addAbstractNum will definitely throw an exception | 
![]()  | 64301 | OPC | Allow try-with-resources with OPCPackage.revert() | 
![]()  | 63745 | HSSF | Add traversing and debugging interface to HSSF | 
![]()  | 64350 | POI_Overall | Sonar fix - "Iterator.next()" methods should throw "NoSuchElementException" | 
![]()  | 57843 | HWPF | RuntimeException on extracting text from Word 97-2004 Document | 
![]()  | 55505 | HSSF | CountryRecord not found | 
![]()  | 64387 | POIFS | Big POIFS stream result in OOM | 
![]()  | 64411 | POI_Overall | Provide JigSaw modules (breaks backwards compatibility) | 
![]()  | 64441 | SS_Common | Synchronize code that initialises WorkbookFactory | 
![]()  | 63819 | SS_Common | Support DateValue function | 
![]()  | github-179 | SS_Common | Add an option for RangeCopier.copyRange() also clone styles | 
![]()  | 63290 | XSLF | Retrieve default run properties from paragraph | 
![]()  | 64512 | POIFS | Ole10Native aka embedded / object packager - handle UTF16 variants | 
![]()  | 64561 | XWPF | XWPFSDTContent.getText() is empty for nested SDT elements | 
![]()  | 64595 | SXSSF | Missing quoting of pre-evaluated string values in formula cells causes corrupt files | 
![]()  | 64693 | HEMF | POI HwmfGraphics cannot read the embedded document title | 
![]()  | 64716 | HWMF | WMF font typeface charset encoding error | 
![]()  | 64773 | POI_Overall | Visual signatures for .xlsx/.docx | 
![]()  | 64817 | POIFS | Fix issue in testXLSXinPPT | 
![]()  | github-193 | SS_Common | Change TRUNC implementation to use MathX | 
![]()  | 64867 | SL_Common | Provide PDF rendering with PPTX2PNG | 
![]()  | 64964 | SS_Common | Converting cell values to boolean should throw IllegalStateException instead of RuntimeException when conversion is not possible | 
![]()  | 64971 | XSSF | XSSFFont setCharset(FontCharset) should use latest class instead of deprecated one | 
![]()  | 60397 | XSSF | Improve performance of cell merge | 
![]()  | github-206 | SXSSF | Improve performance of SXSSF cell evaluation | 
![]()  | 64976 | SS_Common | Change some methods to return ints instead of shorts (Font and CellStyle) | 
![]()  | 56205 | OOXML | Upgrade OOXML schema to 3rd edition (transitional) (breaks backwards compatibility) | 
![]()  | 64979 | OOXML | Change artifact names of poi-/ooxml-schemas | 
![]()  | 64981 | OOXML | Upgrade OOXML schema to 5th edition (transitional) (breaks backwards compatibility) | 
![]()  | 64876 | XSLF | Unable to convert pptx to pdf | 
![]()  | 65026 | POI_Overall | Migrate tests to Junit 5 | 
![]()  | github-207 | POI_Overall | Use SLF4J instead of commons-logging - use jcl-over-slf4j | 
![]()  | 65061 | XSSF | Handle VmlDrawings containing spreadsheet-ml default namespace | 
![]()  | 65063 | HSLF | WMF parsing failed on closed empty polygon | 
![]()  | github-198 | POI_Overall | Remove jdk.charset module dependency for spreadsheets generation | 
![]()  | github-196 | OOXML | Delete unused certificate exceptions | 
![]()  | github-191 | SS_Common | Fix RuntimeException on array formula referencing blank cell | 
![]()  | github-189 | SS_Common | Move date parsing logic to DateParser | 
![]()  | github-187 | XSSF | Add length validation for Excel DataValidations that are list literals | 
![]()  | github-184 | SXSSF | New EmittingSXSSFWorkbook | 
![]()  | github-176 | XSSF | Remove limit on number of rules in XSSFSheetConditionalFormatting | 
![]()  | github-177 | HSSF | Avoid NullPointerException if RangeCopier encounters empty/missing rows | 
Version 4.1.2 (2020-02-17)
Summary
- Removed a lot of internal uses of StringBuffers
 - XDDF - some work on better chart support
 - Common SL / EMF - ongoing rendering fixes
 - XSLF - OOM fixes when parsing arbitrary shape ids + a new dependency to SparseBitSet 1.2
 - updated dependencies to Bouncycastle 1.64
 
Changes
| Type | Bug | Module | Description | 
|---|---|---|---|
![]()  | 64015 | POI_Overall | Swap zaxxer.com:SparseBitSet for java.util.BitSet | 
![]()  | 63788 | XWPF | When removing AbstractNum match by abstractNumId, not list index | 
![]()  | 63940 | POI_Overall | Avoid endless loop/out of memory on string-replace with empty search string | 
![]()  | 63700 | POI_Overall | Make D* functions work with numeric result column | 
![]()  | 63960 | SXSSF | Write pre-evaluated string-values in formula cells with the correct type | 
![]()  | 63984 | POI_Overall | Function AND / OR should treat missing parameters as FALSE | 
![]()  | 63749 | POI_Overall | Make getFirstRowNum() and getFirstCellNum() return -1 consistently with empty data | 
![]()  | 63569 | POI_Overall | Make IOUtils.setByteArrayMaxOverride() work correctly | 
![]()  | XSLF | Add, insert and remove columns on XSLFTable | |
![]()  | 63842 | POI_Overall | Fix issue with fractions where the whole number part is too large to store as an int | 
![]()  | 63889 | XDDF | Produce valid PPTX file with several chart series | 
![]()  | 63918 | SL_Common XSLF | Fix texture fill - scale stretched images correctly | 
![]()  | XDDF | Add Doughnut chart data series support | |
![]()  | 63955 | HMEF | HMEFContentsExtractor fails to extract content from winmail.dat | 
![]()  | 63927 | POI_Overall | Inconsistent mapping of Norwegian locales for date formats | 
![]()  | github-163 | XSSF | Add set level numbering on XWPFParagraph | 
![]()  | github-164 | XSSF | Fix Bug in XSSFTable.setCellReferences when table is single cell | 
![]()  | 64004 | POI_Overall | Replace Cloneable / clone() with copy constructor | 
![]()  | 64036 | POI_Overall | Replace reflection calls in factories for Java 9+ | 
![]()  | 64044 | POI_Overall | Fix issue with setCellValue(LocalDate) not supporting nulls properly | 
![]()  | 64088 | SL_Common XSLF | SlideShow rendering fixes | 
![]()  | 64098 | XWPF | XWPFRun: Whitespace in text not preserved if starting with tab character. | 
![]()  | 64108 | POI_Overall | unsafe pipe character ("|") in Relationship target attribute is not being encoded into a '%7C'. | 
![]()  | github-166 | XDDF | Expose invert if negative on bar charts | 
![]()  | 63998 | HSSF | Support commas, exclamation marks correctly in AreaReference | 
![]()  | 64045 | XSSF | XSSFWorkbook constructor doesn't close ZipFile if an exception occurs | 
![]()  | 64130 | HSSF | Regression in OldSheetRecord | 
Version 4.1.1 (2019-10-20)
Summary
- XSSF: Memory improvements which use much less memory while writing large xlsx files
 - XDDF: Improved chart support: more types and some API changes around angles and width units
 - updated dependencies to Bouncycastle 1.62, Commons-Codec 1.13, Commons-Collections4 4.4, Commons-Compress 1.19
 - XWPF: Additional API methods
 - XSSF: Fixes to XSSFSheet.addMergedRegion() and XSSFRow.shiftRows()
 - EMF/HSLF: Rendering fixes
 - CVE-2019-12415 - XML External Entity (XXE) Processing in Apache POI
 
Changes
| Type | Bug | Module | Description | 
|---|---|---|---|
![]()  | 63774 | POI_Overall | Cache pids to speed up custom properties "add" method | 
![]()  | 63779 | SS_Common | Add support for the new Java date/time API added in Java 8 | 
![]()  | 59322 | HWPF | Avoid NullPointerException when reading Word Document with tables and a cell with a null descriptor | 
![]()  | 61490 | HWPF | Read cells of tables correctly in cases where the last cell is not 'fake' | 
![]()  | HWPF | Do not use WeakReference for parents in Ranges to avoid spurious failures in tests | |
![]()  | 63657 | XSSF | Fix regression with memory usage in XSSFRow.onDocumentWrite and some other temporary memory leaks | 
![]()  | 63842 | SS_Common | FractionFormat casts whole part of the value into 'int' | 
![]()  | 63818 | HSLF | Allow multiple charsets for same font typeface | 
![]()  | 63768 | XSSF | XSSFExportToXml adjust settings on SchemaFactory | 
![]()  | 63541 | XSLF | NullPointerException from XSLFSimpleShape.getAnchor for empty xfrm tags | 
![]()  | 63745 | POI_Overall | Add traversing and debugging interface | 
![]()  | 57423 62711 | XSSF | Fix regression when XSSFRow.shiftRows() is used | 
![]()  | 63580 | SL_Common HSLF XSLF | Fix texture paint handling | 
![]()  | 59004 | HSLF | HSLF rendering - adjust values for presetShapeDefinition differs in HSLF/XSLF | 
![]()  | HSLF | Don't fallback to master shape properties, if master shape is not assigned | |
![]()  | POI_Overall | Add a ThreadLocalUtil.clearAllThreadLocals which can be used to clear thread-locals | |
![]()  | 63371 | XSSF | XSSFSheet.addMergedRegion should adjust count of merged cells | 
![]()  | 63073 | XSSF | Return value of XSSFSheet.addMergedRegion is off by one | 
![]()  | 54803 | OPC | Error opening XLSX after saving with a Drawing using POI | 
![]()  | github-135 | XDDF | Support to create new chart without reading template | 
![]()  | github-143 | HPSF | MAPIType.isFixedLength: not true in case of length > 8 | 
![]()  | github-144 | XDDF | Support for seven new chart types | 
![]()  | github-149 | HSMF | improve MAPIMessage.getHtmlBody | 
![]()  | github-150 | XWPF | Add XWPFPicture getWidth and getDepth methods | 
![]()  | github-151 | XWPF | Add XWPFRun getStyle method | 
![]()  | github-152 | XWPF | Add XWPFParagraph setKeepNext method | 
![]()  | github-153 | XWPF | Add XWPFParagraph createHyperlinkRun method | 
![]()  | github-154 | SXSSF | Improved support for writing large files | 
![]()  | github-157 | OOXML | Add setters to POIXMLProperties | 
![]()  | 63153 | XDDF | Enable safe removal of data series from charts | 
![]()  | 59623 | XDDF | Provide example of threshold line in bar chart | 
Version 4.1.0 (2019-04-09)
Summary
- Improved support/fixes for Java 9+ and IBM JVM
 - New EMF renderer and support of SVG images in XSLF
 - Security, stability and memory/resource handling improvements
 - Various bug fixes across function and conditional format rule evaluation
 - Upgrade to XMLBeans 3.1.0
 - Upgrade to Bouncycastle 1.61
 - Upgrade to Curvesapi 1.06
 - Upgrade to Commons-Codec 1.12
 - Upgrade to Commons-Collections4 4.3
 - Upgrade to XMLSec 2.1.2
 
Changes
| Type | Bug | Module | Description | 
|---|---|---|---|
![]()  | 63200 | XSLF | Avoid a possible NullPointerException in XSLFShape.selectPaint() | 
![]()  | 60724 | SS_Common | Implement 'ignore hidden rows' variations for existing implemented variants | 
![]()  | 63264 | SS_Common | Conditional Format rule evaluation calculates relative references incorrectly | 
![]()  | 61652 | SS_Common | Fix NPE in EDATE function when date evaluates to an invalid value | 
![]()  | 62151 | POIFS | Work around illegal reflective access in Java 9+ when freeing buffers | 
![]()  | 63029 | OPC | OPCPackage Potentially clobbers files on close() | 
![]()  | 62980 | SS_Common XSSF HSSF | Make D* functions ignore case in headings | 
![]()  | 60977 | XSSF | Adding custom properties creates invalid .xlsx file on second write | 
![]()  | 60460 | SL_Common | Null pointer exception in ExternSheetNameResolver.prependSheetName method | 
![]()  | 60845 | XSSF | Fix copying styles/conditional formatting | 
![]()  | 63054 | SS_Common XSSF HSSF | Improved evaluation of array formulas with errors in arguments | 
![]()  | 63047 | POI_Overall | Make POILogger subclassable | 
![]()  | 62904 | SS_Common XSSF HSSF | Support array arguments in IF and logical IS*** functions | 
![]()  | 63028 | SL_Common XSLF HSLF | Provide font embedding for slideshows | 
![]()  | 61532 | SXSSF | Fix setting values/types during formula evaluation for SXSSF | 
![]()  | 62629 | OPC | Allow to handle files with invalid content types for pictures | 
![]()  | 62839 | SL_Common | Fix MathX.floor for negative n | 
![]()  | 62884 | SL_Common | Sheetnum is not checked in InternalWorkbook.setSheetHidden() | 
![]()  | 62886 | OPC | Regression extracting text from corrupted docx files | 
![]()  | 63017 | SL_Common XSLF | Remove rows from a XSLFTable | 
![]()  | 60656 | SL_Common XSLF HSLF | EMF image support in slideshows | 
![]()  | 62365 | XSLF | SVG image support in XSLF | 
![]()  | github-136 | XSSF | Support GEOMEAN function | 
![]()  | 63011 | OPC | Multiple digital signature in excel file broke first signature | 
![]()  | 62999 | SL_Common | IBM JDK JIT causes AIOOBE in TexturePaintContext | 
![]()  | 62994 | POI_Overall | IBM JCE workarounds | 
![]()  | 62966 | SL_Common | init presetShapeDefinitions.xml fail under IBM jdk | 
![]()  | 62953 | SL_Common XSLF HSLF | Rendering of FreeformShapes with formula fails | 
![]()  | 63005 | POI_Overall | Remove support for reading files that have XML entity definitions | 
![]()  | 63013 | XWPF | add XWPFRun setLang method | 
![]()  | 63240 | XSSF | Remove unnecessary synchronization on DocumentHelper.newDocumentBuilder and SAXHelper.newXMLReader | 
![]()  | 61652 | SS_Common | Fix NPE in EDATE function when date evaluates to an invalid value | 
![]()  | 63264 | SS_Common | Conditional Format rule evaluation calculates relative references incorrectly | 
![]()  | 60724 | SS_Common | Implement 'ignore hidden rows' variations for existing SUBTOTAL function variants | 
![]()  | 63268 | SS_Common | Fix issue with CellUtil.setFont adding unnecessary styles | 
![]()  | 61700 | SS_Common | getForceFormulaRecalculation() returns wrong value | 
![]()  | 63292 | SS_Common | DataFormatter.formatCellValue() ignores use1904Windowing w/4-part date formats | 
Version 4.0.1 (2018-12-03)
Summary
- Fixes pom.xml entries for commons-maths3 (missing), curvesapi and commons-codec
 - Improvements for XDDF charts and text manipulation
 - Upgrade to XMLBeans 3.0.2
 
Changes
| Type | Bug | Module | Description | 
|---|---|---|---|
![]()  | 59773 | POI_Overall | Move loop invariants outside of loop for faster execution | 
![]()  | 59834 | POI_Overall | poi-ooxml pom.xml should include dependency on poi-scratchpad | 
![]()  | 62690 | POI_Overall | Missing Maven dependency to commons-math3 | 
![]()  | 62692 | OPC | WildFly XML parser not properly supported - Property 'http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit' is not recognized | 
![]()  | 62699 | POI_Overall | Download page must link to https://www.apache.org/dist/poi/KEYS | 
![]()  | 62733 | XSLF | XSLFBackground setFill() can corrupt the document | 
![]()  | 62735 | XSSF | poi-ooxml 4.0.0 should have dependency on curvesapi 1.05 | 
![]()  | 62740 | XSSF | XSSFTable constructor automatically assigns invalid (non-unique) column IDs | 
![]()  | 62768 | OPC | OPCPackage#close() method is incorrectly synchronized | 
![]()  | 62796 | POI_Overall | Remove XML Event parser code from PackagePropertiesMarshaller | 
![]()  | 62800 | XSLF | Fix null pointer exception if a picture shape has no blip id | 
![]()  | 62805 | POI_Overall | Fix Old-Xerces build issues | 
![]()  | 62805 | XSLF | XSLFTableCell#removeBorder(BorderEdge.right) removes the bottom edge not the right edge. | 
![]()  | 62811 | POI_Overall | POI Encryption didn't work with 4.0.0 but did work with 3.17 | 
![]()  | 62951 | POI_Overall | FileMagic not correctly identified | 
![]()  | 62949 | SL_Common | SlideShow rendering - keyframe fractions must be increasing | 
![]()  | 62921 | POI_Overall | Provide OOXMLLite alternative for Java 12+ | 
![]()  | 62625 | POI_Overall | Handle off-spec, variant REFERENCE_NAME record structure in VBAMacroReader | 
![]()  | 62624 | POI_Overall | Handle module name mapping in VBAMacroReader | 
![]()  | 62836 | SS_Common | Support TREND function | 
![]()  | 62859 | XWPF | Rare NPE while creating XWPFSDTContent | 
![]()  | 62373 | SS_Common | Support for FREQUENCY function | 
![]()  | 62831 | POI_Overall | WorkbookFactory.create support for subclass of File, eg from JFileChooser | 
![]()  | 62815 | XSSF | XLSB number extraction improvements | 
![]()  | 62373 | SS_Common | Support FREQUENCY function | 
![]()  | 62742 | POI_Overall | Add common-compress jar to bin zip/tgz | 
![]()  | 62747 | POI_Overall | Upgrade bouncycastle dependency to 1.60 | 
![]()  | 62736 | XWPF | Relations on XSLFPictureShape were removed unconditionally | 
![]()  | github-109 | XDDF | Define XDDF user model for text body, its paragraphs and text runs | 
![]()  | github-123 | XSSF | Import chart on drawing | 
![]()  | 62746 | XDDF | Support axIds in XDDF | 
![]()  | 60509 | XSSF | XSSFWorkbook.setSheetName() does not update references in charts | 
![]()  | 59625 | XWPF | Localisation (Internationalisation in other languages) when applied in charts corrupt the MS Word file | 
Version 4.0.0 (2018-09-07)
Summary
- Removed support for Java 6 and 7 making Java 8 the minimum version supported
 - New OOXML schema (1.4) necessary, because of incompatible XMLBeans loading not anymore through POIXMLTypeLoader
 
Changes
| Type | Bug | Module | Description | 
|---|---|---|---|
![]()  | 62649 | POIFS | Remove OPOIFS* (breaks backwards compatibility) | 
![]()  | 61589 | XSLF | Importing content does not copy hyperlink address | 
![]()  | 62587 | XSLF | repeated call to XSLFSheet.removeShape leads to java.lang.IllegalArgumentException: partName | 
![]()  | 62513 | OOXML | Don't try to parse embedded package relationships | 
![]()  | 59268 | OOXML | Work on providing an updated version of XMLBeans | 
![]()  | 62451 | HPSF | Document last printed in the year 27321 | 
![]()  | 60713 | SXSSF XSSF OPC | (S)XSSFWorkbook/POIXMLDocument.write(OutputStream) closes the OutputStream (breaks backwards compatibility) | 
![]()  | 62452 | OPC | Extract configuration while verifying XML signatures | 
![]()  | 62187 | OPC | Compiling with Java 10 fails with ClassCastException / use commons-compress (breaks backwards compatibility) | 
![]()  | 62355 | POI_Overall | Unsplit packages for Jigsaw / Java 9 compatibility (breaks backwards compatibility) | 
![]()  | 62041 | SL_Common | TestFonts fails on Mac | 
![]()  | 62051 | XSLF | Two shapes have the same shapeId within the same slide | 
![]()  | 61633 | XSLF | Zero width shapes aren't rendered | 
![]()  | 62037 | SL_Common | SlideNames should not be null but have a default as if accessed by VBA | 
![]()  | 62381 | SL_Common | Fix rendering of AutoShapes | 
![]()  | 59893 | POI_Overall | Forbid calls to InputStream.available | 
![]()  | 61905 | HSSF | HSSFWorkbook.setActiveCell() does not actually make the cell selected in Excel | 
![]()  | 61459 | HSLF | HSLFShape.getShapeName() returns name of shapeType and not the shape name | 
![]()  | 62319 | SL_Common | Decommission XSLF-/PowerPointExtractor (breaks backwards compatibility) | 
![]()  | 62092 | SL_Common | Text not extracted from grouped text shapes in HSLF | 
![]()  | 62159 | OPC | Support XML signature over windows certificate store | 
![]()  | 57369 | XDDF | Add support for major and minor units on chart axes | 
![]()  | 55954 | XWPF | Added methods to position table | 
![]()  | 61947 | POI_Overall | Remove deprecated classes (POI 4.0.0) | 
![]()  | 55954 | XWPF | Add functions to get, set, remove outer borders for tables | 
![]()  | github-72 | XDDF | Define XDDF user model for shape properties to be shared between XSLF, XSSF and XWPF | 
![]()  | 61543 | XSSF | Do not fail with "part already exists" when tables are created/removed (breaks backwards compatibility) | 
![]()  | 61550 | POI_Overall | Add more information to exception text and verify that it is thrown (breaks backwards compatibility) | 
![]()  | 61609 | POI_Overall | Add .gitattribute file and set lf for one sample-file (breaks backwards compatibility) | 
![]()  | 61797 | SL_Common | Embed Excel / Ole objects into powerpoint (breaks backwards compatibility) | 
![]()  | 61943 | SL_Common | narrow generics definition because of tighter java9 checks | 
![]()  | 61942 | OPC | Refactor PackagePartName handling and add getUnusedPartIndex method | 
![]()  | 61941 | POIFS | Move Ole marker generation to Ole10Native | 
![]()  | 61940 | POI_Overall | Replace ClassID statics with enum | 
![]()  | 61939 | OPC | Provide schema for AlternateContent - provide new ooxml-schemas-1.4.jar | 
![]()  | 61787 | HSSF | Change how deleted content is detected to not incorrectly see too much text as deleted, this was introduced with bug 58067 | 
![]()  | 61798 | HSSF | Fix usage of getLastCellNum() when calculating worksheet dimension during saving | 
![]()  | 61911 | HWPF | Avoid IndexOutOfBounds access when reading pictures | 
![]()  | 61765 | HSSF | Support third party tool generated files using WorkBook as their POIFS directory name | 
![]()  | 61881 | HSLF | Regression in ppt parsing: typeface can't be null or empty | 
![]()  | github-68 | XDDF XSLF XSSF XWPF | Share chart data implementation between XSLFChart, XSSFChart and XWPFChart through XDDF | 
![]()  | 61809 | HPSF | Infinite loop in SectionIDMap.get() and .put() | 
![]()  | 60887 | XSSF | Surface XSSF Header/Footer Attributes | 
![]()  | 61730 | SS_Common | CellRangeAddresses support iterating over their CellAddresses | 
![]()  | 61727 | SS_Common | CellRangeUtil merge cell ranges broken for certain orders of arguments | 
![]()  | 57517 | HSSF | Fix various situations that were handled incorrectly in HSSFOptimiser | 
![]()  | 61671 | XSLF | XSLFSlide does not contain isHidden and setHidden like HSLFSlide does | 
![]()  | 61630 | XSSF | Performance improvement to XSSFExportToXML | 
![]()  | 58068 | XSSF | Add a method to pass the actual Color to StylesTable.findFont() | 
![]()  | 61096 | POIFS | Add support for modules in VBAMacroReader | 
![]()  | 61033 | XSSF | Add XSSFWorkbook.setCellFormulaValidation() to control if formulas are validated during Cell.setCellFormula() | 
![]()  | 61148 | SXSSF | Fix calculating/setting formula value | 
![]()  | 61064 | SS_Common | Support behavior of function CEILING in newer versions of Microsoft Excel | 
![]()  | 61516 | SS_Common | Correctly handle references that end up outside the workbook when cells with formulas are copied | 
![]()  | 60737 | XSSF | Add endSheet() to XSSFEventBasedExcelExtractor | 
![]()  | 59747 | OPC | Exchange order of writing parts into Zip to allow some tools to handle files better | 
![]()  | github-69 | SS_Common | Support matrix functions | 
![]()  | 60499 | OPC | Deleting a picture that is used twice on a slide corrupt the slide | 
![]()  | 60279 | POI_Overall | Back-off to brute-force search for macro content if macro offset is incorrect | 
![]()  | 61528 | XSSF | Pivot table enhancements | 
![]()  | 61906 | XSSF | add API for working with RichStringText | 
![]()  | 61792 | SS_Common | Avoid iterating over chars (use codepoints instead) | 
![]()  | 62254 | SS_Common | Update OFFSET function to support optional values | 
![]()  | 62435 | XSSF | Rename getAllEmbedds method to getAllEmbeddedParts (getAllEmbedds is retained but deprecated) | 
![]()  | 62438 | POI_Overall | Replace org.apache.poi.openxml4j.util.Nullable with java.lang.Optional (breaks backwards compatibility) | 
![]()  | github-90 | XSSF | Change default DSIG signing algorithm to SHA256 | 
![]()  | github-107 | SS_Common | Support AREAS function | 
![]()  | github-110 | XWPF | Renames org.apache.poi.xwpf.usermodel.TextSegement to org.apache.poi.xwpf.usermodel.TextSegment (breaks backwards compatibility) | 
![]()  | github-114 | XWPF | Better support for Footnotes and Endnotes | 







