>
 

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

TypeBugModuleDescription
addSS_CommonSS method to check if a Named Range is hidden or not
addHSMFHSMF enhancements - NamedIdChunk, MultiValueChunks, ByteChunkDeferred
fixSS_CommonFix incorrect handling of format which should not produce any digit for zero
fixSS_CommonSpeed up auto-sizing of columns when the sheet contains merged regions
fixOPCDecrease usage of ThreadLocals in XML Signature API
fixSS_CommonPicture.resize(double scale) scales width wrong for small pictures and when dx1 is set
fixOPCupgrading xmlsec causes junit tests to fail
fixXSLFXSLF - Wrong scheme colors used when rendering
fixXWPFMethod setText in XWPFTableCell updates the xml and also updates the runs and iruns
fixXWPFXWPFTableCell does not process bodyElements when handle paragraph
fixXWPFXWPFNumbering.addAbstractNum will definitely throw an exception
fixOPCAllow try-with-resources with OPCPackage.revert()
fixHSSFAdd traversing and debugging interface to HSSF
fixPOI_OverallSonar fix - "Iterator.next()" methods should throw "NoSuchElementException"
fixHWPFRuntimeException on extracting text from Word 97-2004 Document
fixHSSFCountryRecord not found
fixPOIFSBig POIFS stream result in OOM
addPOI_OverallProvide JigSaw modules (breaks backwards compatibility)
fixSS_CommonSynchronize code that initialises WorkbookFactory
addSS_CommonSupport DateValue function
addSS_CommonAdd an option for RangeCopier.copyRange() also clone styles
fixXSLFRetrieve default run properties from paragraph
addPOIFSOle10Native aka embedded / object packager - handle UTF16 variants
fixXWPFXWPFSDTContent.getText() is empty for nested SDT elements
fixSXSSFMissing quoting of pre-evaluated string values in formula cells causes corrupt files
fixHEMFPOI HwmfGraphics cannot read the embedded document title
fixHWMFWMF font typeface charset encoding error
fixPOI_OverallVisual signatures for .xlsx/.docx
fixPOIFSFix issue in testXLSXinPPT
fixSS_CommonChange TRUNC implementation to use MathX
addSL_CommonProvide PDF rendering with PPTX2PNG
fixSS_CommonConverting cell values to boolean should throw IllegalStateException instead of RuntimeException when conversion is not possible
fixXSSFXSSFFont setCharset(FontCharset) should use latest class instead of deprecated one
fixXSSFImprove performance of cell merge
fixSXSSFImprove performance of SXSSF cell evaluation
fixSS_CommonChange some methods to return ints instead of shorts (Font and CellStyle)
fixOOXMLUpgrade OOXML schema to 3rd edition (transitional) (breaks backwards compatibility)
fixOOXMLChange artifact names of poi-/ooxml-schemas
fixOOXMLUpgrade OOXML schema to 5th edition (transitional) (breaks backwards compatibility)
fixXSLFUnable to convert pptx to pdf
fixPOI_OverallMigrate tests to Junit 5
addPOI_OverallUse SLF4J instead of commons-logging - use jcl-over-slf4j
fixXSSFHandle VmlDrawings containing spreadsheet-ml default namespace
fixHSLFWMF parsing failed on closed empty polygon
fixPOI_OverallRemove jdk.charset module dependency for spreadsheets generation
fixOOXMLDelete unused certificate exceptions
fixSS_CommonFix RuntimeException on array formula referencing blank cell
fixSS_CommonMove date parsing logic to DateParser
fixXSSFAdd length validation for Excel DataValidations that are list literals
fixSXSSFNew EmittingSXSSFWorkbook
fixXSSFRemove limit on number of rules in XSSFSheetConditionalFormatting
fixHSSFAvoid 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

TypeBugModuleDescription
fixPOI_OverallSwap zaxxer.com:SparseBitSet for java.util.BitSet
fixXWPFWhen removing AbstractNum match by abstractNumId, not list index
fixPOI_OverallAvoid endless loop/out of memory on string-replace with empty search string
fixPOI_OverallMake D* functions work with numeric result column
fixSXSSFWrite pre-evaluated string-values in formula cells with the correct type
fixPOI_OverallFunction AND / OR should treat missing parameters as FALSE
fixPOI_OverallMake getFirstRowNum() and getFirstCellNum() return -1 consistently with empty data
fixPOI_OverallMake IOUtils.setByteArrayMaxOverride() work correctly
addXSLFAdd, insert and remove columns on XSLFTable
fixPOI_OverallFix issue with fractions where the whole number part is too large to store as an int
fixXDDFProduce valid PPTX file with several chart series
fixSL_Common XSLFFix texture fill - scale stretched images correctly
addXDDFAdd Doughnut chart data series support
fixHMEFHMEFContentsExtractor fails to extract content from winmail.dat
fixPOI_OverallInconsistent mapping of Norwegian locales for date formats
fixXSSFAdd set level numbering on XWPFParagraph
fixXSSFFix Bug in XSSFTable.setCellReferences when table is single cell
fixPOI_OverallReplace Cloneable / clone() with copy constructor
fixPOI_OverallReplace reflection calls in factories for Java 9+
fixPOI_OverallFix issue with setCellValue(LocalDate) not supporting nulls properly
fixSL_Common XSLFSlideShow rendering fixes
fixXWPFXWPFRun: Whitespace in text not preserved if starting with tab character.
fixPOI_Overallunsafe pipe character ("|") in Relationship target attribute is not being encoded into a '%7C'.
fixXDDFExpose invert if negative on bar charts
fixHSSFSupport commas, exclamation marks correctly in AreaReference
fixXSSFXSSFWorkbook constructor doesn't close ZipFile if an exception occurs
fixHSSFRegression 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

TypeBugModuleDescription
addPOI_OverallCache pids to speed up custom properties "add" method
addSS_CommonAdd support for the new Java date/time API added in Java 8
fixHWPFAvoid NullPointerException when reading Word Document with tables and a cell with a null descriptor
fixHWPFRead cells of tables correctly in cases where the last cell is not 'fake'
fixHWPFDo not use WeakReference for parents in Ranges to avoid spurious failures in tests
fixXSSFFix regression with memory usage in XSSFRow.onDocumentWrite and some other temporary memory leaks
fixSS_CommonFractionFormat casts whole part of the value into 'int'
fixHSLFAllow multiple charsets for same font typeface
fixXSSFXSSFExportToXml adjust settings on SchemaFactory
fixXSLFNullPointerException from XSLFSimpleShape.getAnchor for empty xfrm tags
addPOI_OverallAdd traversing and debugging interface
fixXSSFFix regression when XSSFRow.shiftRows() is used
fixSL_Common HSLF XSLFFix texture paint handling
fixHSLFHSLF rendering - adjust values for presetShapeDefinition differs in HSLF/XSLF
fixHSLFDon't fallback to master shape properties, if master shape is not assigned
addPOI_OverallAdd a ThreadLocalUtil.clearAllThreadLocals which can be used to clear thread-locals
fixXSSFXSSFSheet.addMergedRegion should adjust count of merged cells
fixXSSFReturn value of XSSFSheet.addMergedRegion is off by one
fixOPCError opening XLSX after saving with a Drawing using POI
addXDDFSupport to create new chart without reading template
addHPSFMAPIType.isFixedLength: not true in case of length > 8
addXDDFSupport for seven new chart types
addHSMFimprove MAPIMessage.getHtmlBody
addXWPFAdd XWPFPicture getWidth and getDepth methods
addXWPFAdd XWPFRun getStyle method
addXWPFAdd XWPFParagraph setKeepNext method
addXWPFAdd XWPFParagraph createHyperlinkRun method
addSXSSFImproved support for writing large files
addOOXMLAdd setters to POIXMLProperties
fixXDDFEnable safe removal of data series from charts
fixXDDFProvide 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

TypeBugModuleDescription
fixXSLFAvoid a possible NullPointerException in XSLFShape.selectPaint()
addSS_CommonImplement 'ignore hidden rows' variations for existing implemented variants
fixSS_CommonConditional Format rule evaluation calculates relative references incorrectly
fixSS_CommonFix NPE in EDATE function when date evaluates to an invalid value
fixPOIFSWork around illegal reflective access in Java 9+ when freeing buffers
addOPCOPCPackage Potentially clobbers files on close()
addSS_Common XSSF HSSFMake D* functions ignore case in headings
fixXSSFAdding custom properties creates invalid .xlsx file on second write
fixSL_CommonNull pointer exception in ExternSheetNameResolver.prependSheetName method
fixXSSFFix copying styles/conditional formatting
addSS_Common XSSF HSSFImproved evaluation of array formulas with errors in arguments
fixPOI_OverallMake POILogger subclassable
addSS_Common XSSF HSSFSupport array arguments in IF and logical IS*** functions
addSL_Common XSLF HSLFProvide font embedding for slideshows
fixSXSSFFix setting values/types during formula evaluation for SXSSF
fixOPCAllow to handle files with invalid content types for pictures
fixSL_CommonFix MathX.floor for negative n
fixSL_CommonSheetnum is not checked in InternalWorkbook.setSheetHidden()
fixOPCRegression extracting text from corrupted docx files
addSL_Common XSLFRemove rows from a XSLFTable
addSL_Common XSLF HSLFEMF image support in slideshows
addXSLFSVG image support in XSLF
addXSSFSupport GEOMEAN function
fixOPCMultiple digital signature in excel file broke first signature
fixSL_CommonIBM JDK JIT causes AIOOBE in TexturePaintContext
fixPOI_OverallIBM JCE workarounds
fixSL_Commoninit presetShapeDefinitions.xml fail under IBM jdk
fixSL_Common XSLF HSLFRendering of FreeformShapes with formula fails
fixPOI_OverallRemove support for reading files that have XML entity definitions
fixXWPFadd XWPFRun setLang method
fixXSSFRemove unnecessary synchronization on DocumentHelper.newDocumentBuilder and SAXHelper.newXMLReader
fixSS_CommonFix NPE in EDATE function when date evaluates to an invalid value
fixSS_CommonConditional Format rule evaluation calculates relative references incorrectly
addSS_CommonImplement 'ignore hidden rows' variations for existing SUBTOTAL function variants
fixSS_CommonFix issue with CellUtil.setFont adding unnecessary styles
fixSS_CommongetForceFormulaRecalculation() returns wrong value
fixSS_CommonDataFormatter.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

TypeBugModuleDescription
fixPOI_OverallMove loop invariants outside of loop for faster execution
fixPOI_Overallpoi-ooxml pom.xml should include dependency on poi-scratchpad
fixPOI_OverallMissing Maven dependency to commons-math3
fixOPCWildFly XML parser not properly supported - Property 'http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit' is not recognized
fixPOI_OverallDownload page must link to https://www.apache.org/dist/poi/KEYS
fixXSLFXSLFBackground setFill() can corrupt the document
fixXSSFpoi-ooxml 4.0.0 should have dependency on curvesapi 1.05
fixXSSFXSSFTable constructor automatically assigns invalid (non-unique) column IDs
fixOPCOPCPackage#close() method is incorrectly synchronized
fixPOI_OverallRemove XML Event parser code from PackagePropertiesMarshaller
fixXSLFFix null pointer exception if a picture shape has no blip id
fixPOI_OverallFix Old-Xerces build issues
fixXSLFXSLFTableCell#removeBorder(BorderEdge.right) removes the bottom edge not the right edge.
fixPOI_OverallPOI Encryption didn't work with 4.0.0 but did work with 3.17
fixPOI_OverallFileMagic not correctly identified
fixSL_CommonSlideShow rendering - keyframe fractions must be increasing
fixPOI_OverallProvide OOXMLLite alternative for Java 12+
fixPOI_OverallHandle off-spec, variant REFERENCE_NAME record structure in VBAMacroReader
fixPOI_OverallHandle module name mapping in VBAMacroReader
fixSS_CommonSupport TREND function
fixXWPFRare NPE while creating XWPFSDTContent
addSS_CommonSupport for FREQUENCY function
fixPOI_OverallWorkbookFactory.create support for subclass of File, eg from JFileChooser
fixXSSFXLSB number extraction improvements
fixSS_CommonSupport FREQUENCY function
fixPOI_OverallAdd common-compress jar to bin zip/tgz
fixPOI_OverallUpgrade bouncycastle dependency to 1.60
fixXWPFRelations on XSLFPictureShape were removed unconditionally
addXDDFDefine XDDF user model for text body, its paragraphs and text runs
addXSSFImport chart on drawing
fixXDDFSupport axIds in XDDF
fixXSSFXSSFWorkbook.setSheetName() does not update references in charts
fixXWPFLocalisation (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

TypeBugModuleDescription
removePOIFSRemove OPOIFS* (breaks backwards compatibility)
fixXSLFImporting content does not copy hyperlink address
fixXSLFrepeated call to XSLFSheet.removeShape leads to java.lang.IllegalArgumentException: partName
fixOOXMLDon't try to parse embedded package relationships
addOOXMLWork on providing an updated version of XMLBeans
fixHPSFDocument last printed in the year 27321
fixSXSSF XSSF OPC(S)XSSFWorkbook/POIXMLDocument.write(OutputStream) closes the OutputStream (breaks backwards compatibility)
addOPCExtract configuration while verifying XML signatures
fixOPCCompiling with Java 10 fails with ClassCastException / use commons-compress (breaks backwards compatibility)
fixPOI_OverallUnsplit packages for Jigsaw / Java 9 compatibility (breaks backwards compatibility)
fixSL_CommonTestFonts fails on Mac
fixXSLFTwo shapes have the same shapeId within the same slide
fixXSLFZero width shapes aren't rendered
addSL_CommonSlideNames should not be null but have a default as if accessed by VBA
fixSL_CommonFix rendering of AutoShapes
fixPOI_OverallForbid calls to InputStream.available
fixHSSFHSSFWorkbook.setActiveCell() does not actually make the cell selected in Excel
fixHSLFHSLFShape.getShapeName() returns name of shapeType and not the shape name
addSL_CommonDecommission XSLF-/PowerPointExtractor (breaks backwards compatibility)
addSL_CommonText not extracted from grouped text shapes in HSLF
addOPCSupport XML signature over windows certificate store
addXDDFAdd support for major and minor units on chart axes
addXWPFAdded methods to position table
addPOI_OverallRemove deprecated classes (POI 4.0.0)
addXWPFAdd functions to get, set, remove outer borders for tables
addXDDFDefine XDDF user model for shape properties to be shared between XSLF, XSSF and XWPF
addXSSFDo not fail with "part already exists" when tables are created/removed (breaks backwards compatibility)
addPOI_OverallAdd more information to exception text and verify that it is thrown (breaks backwards compatibility)
addPOI_OverallAdd .gitattribute file and set lf for one sample-file (breaks backwards compatibility)
addSL_CommonEmbed Excel / Ole objects into powerpoint (breaks backwards compatibility)
fixSL_Commonnarrow generics definition because of tighter java9 checks
addOPCRefactor PackagePartName handling and add getUnusedPartIndex method
fixPOIFSMove Ole marker generation to Ole10Native
fixPOI_OverallReplace ClassID statics with enum
addOPCProvide schema for AlternateContent - provide new ooxml-schemas-1.4.jar
fixHSSFChange how deleted content is detected to not incorrectly see too much text as deleted, this was introduced with bug 58067
fixHSSFFix usage of getLastCellNum() when calculating worksheet dimension during saving
fixHWPFAvoid IndexOutOfBounds access when reading pictures
fixHSSFSupport third party tool generated files using WorkBook as their POIFS directory name
fixHSLFRegression in ppt parsing: typeface can't be null or empty
addXDDF XSLF XSSF XWPFShare chart data implementation between XSLFChart, XSSFChart and XWPFChart through XDDF
fixHPSFInfinite loop in SectionIDMap.get() and .put()
addXSSFSurface XSSF Header/Footer Attributes
addSS_CommonCellRangeAddresses support iterating over their CellAddresses
fixSS_CommonCellRangeUtil merge cell ranges broken for certain orders of arguments
fixHSSFFix various situations that were handled incorrectly in HSSFOptimiser
addXSLFXSLFSlide does not contain isHidden and setHidden like HSLFSlide does
updateXSSFPerformance improvement to XSSFExportToXML
addXSSFAdd a method to pass the actual Color to StylesTable.findFont()
fixPOIFSAdd support for modules in VBAMacroReader
fixXSSFAdd XSSFWorkbook.setCellFormulaValidation() to control if formulas are validated during Cell.setCellFormula()
fixSXSSFFix calculating/setting formula value
fixSS_CommonSupport behavior of function CEILING in newer versions of Microsoft Excel
fixSS_CommonCorrectly handle references that end up outside the workbook when cells with formulas are copied
addXSSFAdd endSheet() to XSSFEventBasedExcelExtractor
fixOPCExchange order of writing parts into Zip to allow some tools to handle files better
addSS_CommonSupport matrix functions
fixOPCDeleting a picture that is used twice on a slide corrupt the slide
fixPOI_OverallBack-off to brute-force search for macro content if macro offset is incorrect
addXSSFPivot table enhancements
fixXSSFadd API for working with RichStringText
fixSS_CommonAvoid iterating over chars (use codepoints instead)
fixSS_CommonUpdate OFFSET function to support optional values
updateXSSFRename getAllEmbedds method to getAllEmbeddedParts (getAllEmbedds is retained but deprecated)
updatePOI_OverallReplace org.apache.poi.openxml4j.util.Nullable with java.lang.Optional (breaks backwards compatibility)
fixXSSFChange default DSIG signing algorithm to SHA256
fixSS_CommonSupport AREAS function
fixXWPFRenames org.apache.poi.xwpf.usermodel.TextSegement to org.apache.poi.xwpf.usermodel.TextSegment (breaks backwards compatibility)
fixXWPFBetter support for Footnotes and Endnotes