Apache Software Foundation > Apache POI
 

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
addgithub-167HSMFHSMF enhancements - NamedIdChunk, MultiValueChunks, ByteChunkDeferred
fixSS_CommonFix incorrect handling of format which should not produce any digit for zero
fix58896 52834SS_CommonSpeed up auto-sizing of columns when the sheet contains merged regions
fix64186OPCDecrease usage of ThreadLocals in XML Signature API
fix64213SS_CommonPicture.resize(double scale) scales width wrong for small pictures and when dx1 is set
fix63712OPCupgrading xmlsec causes junit tests to fail
fix64241XSLFXSLF - Wrong scheme colors used when rendering
fix63624XWPFMethod setText in XWPFTableCell updates the xml and also updates the runs and iruns
fixgithub-170XWPFXWPFTableCell does not process bodyElements when handle paragraph
fixgithub-171XWPFXWPFNumbering.addAbstractNum will definitely throw an exception
fix64301OPCAllow try-with-resources with OPCPackage.revert()
fix63745HSSFAdd traversing and debugging interface to HSSF
fix64350POI_OverallSonar fix - "Iterator.next()" methods should throw "NoSuchElementException"
fix57843HWPFRuntimeException on extracting text from Word 97-2004 Document
fix55505HSSFCountryRecord not found
fix64387POIFSBig POIFS stream result in OOM
add64411POI_OverallProvide JigSaw modules (breaks backwards compatibility)
fix64441SS_CommonSynchronize code that initialises WorkbookFactory
add63819SS_CommonSupport DateValue function
addgithub-179SS_CommonAdd an option for RangeCopier.copyRange() also clone styles
fix63290XSLFRetrieve default run properties from paragraph
add64512POIFSOle10Native aka embedded / object packager - handle UTF16 variants
fix64561XWPFXWPFSDTContent.getText() is empty for nested SDT elements
fix64595SXSSFMissing quoting of pre-evaluated string values in formula cells causes corrupt files
fix64693HEMFPOI HwmfGraphics cannot read the embedded document title
fix64716HWMFWMF font typeface charset encoding error
fix64773POI_OverallVisual signatures for .xlsx/.docx
fix64817POIFSFix issue in testXLSXinPPT
fixgithub-193SS_CommonChange TRUNC implementation to use MathX
add64867SL_CommonProvide PDF rendering with PPTX2PNG
fix64964SS_CommonConverting cell values to boolean should throw IllegalStateException instead of RuntimeException when conversion is not possible
fix64971XSSFXSSFFont setCharset(FontCharset) should use latest class instead of deprecated one
fix60397XSSFImprove performance of cell merge
fixgithub-206SXSSFImprove performance of SXSSF cell evaluation
fix64976SS_CommonChange some methods to return ints instead of shorts (Font and CellStyle)
fix56205OOXMLUpgrade OOXML schema to 3rd edition (transitional) (breaks backwards compatibility)
fix64979OOXMLChange artifact names of poi-/ooxml-schemas
fix64981OOXMLUpgrade OOXML schema to 5th edition (transitional) (breaks backwards compatibility)
fix64876XSLFUnable to convert pptx to pdf
fix65026POI_OverallMigrate tests to Junit 5
addgithub-207POI_OverallUse SLF4J instead of commons-logging - use jcl-over-slf4j
fix65061XSSFHandle VmlDrawings containing spreadsheet-ml default namespace
fix65063HSLFWMF parsing failed on closed empty polygon
fixgithub-198POI_OverallRemove jdk.charset module dependency for spreadsheets generation
fixgithub-196OOXMLDelete unused certificate exceptions
fixgithub-191SS_CommonFix RuntimeException on array formula referencing blank cell
fixgithub-189SS_CommonMove date parsing logic to DateParser
fixgithub-187XSSFAdd length validation for Excel DataValidations that are list literals
fixgithub-184SXSSFNew EmittingSXSSFWorkbook
fixgithub-176XSSFRemove limit on number of rules in XSSFSheetConditionalFormatting
fixgithub-177HSSFAvoid 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
fix64015POI_OverallSwap zaxxer.com:SparseBitSet for java.util.BitSet
fix63788XWPFWhen removing AbstractNum match by abstractNumId, not list index
fix63940POI_OverallAvoid endless loop/out of memory on string-replace with empty search string
fix63700POI_OverallMake D* functions work with numeric result column
fix63960SXSSFWrite pre-evaluated string-values in formula cells with the correct type
fix63984POI_OverallFunction AND / OR should treat missing parameters as FALSE
fix63749POI_OverallMake getFirstRowNum() and getFirstCellNum() return -1 consistently with empty data
fix63569POI_OverallMake IOUtils.setByteArrayMaxOverride() work correctly
addXSLFAdd, insert and remove columns on XSLFTable
fix63842POI_OverallFix issue with fractions where the whole number part is too large to store as an int
fix63889XDDFProduce valid PPTX file with several chart series
fix63918SL_Common XSLFFix texture fill - scale stretched images correctly
addXDDFAdd Doughnut chart data series support
fix63955HMEFHMEFContentsExtractor fails to extract content from winmail.dat
fix63927POI_OverallInconsistent mapping of Norwegian locales for date formats
fixgithub-163XSSFAdd set level numbering on XWPFParagraph
fixgithub-164XSSFFix Bug in XSSFTable.setCellReferences when table is single cell
fix64004POI_OverallReplace Cloneable / clone() with copy constructor
fix64036POI_OverallReplace reflection calls in factories for Java 9+
fix64044POI_OverallFix issue with setCellValue(LocalDate) not supporting nulls properly
fix64088SL_Common XSLFSlideShow rendering fixes
fix64098XWPFXWPFRun: Whitespace in text not preserved if starting with tab character.
fix64108POI_Overallunsafe pipe character ("|") in Relationship target attribute is not being encoded into a '%7C'.
fixgithub-166XDDFExpose invert if negative on bar charts
fix63998HSSFSupport commas, exclamation marks correctly in AreaReference
fix64045XSSFXSSFWorkbook constructor doesn't close ZipFile if an exception occurs
fix64130HSSFRegression 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
add63774POI_OverallCache pids to speed up custom properties "add" method
add63779SS_CommonAdd support for the new Java date/time API added in Java 8
fix59322HWPFAvoid NullPointerException when reading Word Document with tables and a cell with a null descriptor
fix61490HWPFRead 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
fix63657XSSFFix regression with memory usage in XSSFRow.onDocumentWrite and some other temporary memory leaks
fix63842SS_CommonFractionFormat casts whole part of the value into 'int'
fix63818HSLFAllow multiple charsets for same font typeface
fix63768XSSFXSSFExportToXml adjust settings on SchemaFactory
fix63541XSLFNullPointerException from XSLFSimpleShape.getAnchor for empty xfrm tags
add63745POI_OverallAdd traversing and debugging interface
fix57423 62711XSSFFix regression when XSSFRow.shiftRows() is used
fix63580SL_Common HSLF XSLFFix texture paint handling
fix59004HSLFHSLF 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
fix63371XSSFXSSFSheet.addMergedRegion should adjust count of merged cells
fix63073XSSFReturn value of XSSFSheet.addMergedRegion is off by one
fix54803OPCError opening XLSX after saving with a Drawing using POI
addgithub-135XDDFSupport to create new chart without reading template
addgithub-143HPSFMAPIType.isFixedLength: not true in case of length > 8
addgithub-144XDDFSupport for seven new chart types
addgithub-149HSMFimprove MAPIMessage.getHtmlBody
addgithub-150XWPFAdd XWPFPicture getWidth and getDepth methods
addgithub-151XWPFAdd XWPFRun getStyle method
addgithub-152XWPFAdd XWPFParagraph setKeepNext method
addgithub-153XWPFAdd XWPFParagraph createHyperlinkRun method
addgithub-154SXSSFImproved support for writing large files
addgithub-157OOXMLAdd setters to POIXMLProperties
fix63153XDDFEnable safe removal of data series from charts
fix59623XDDFProvide 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
fix63200XSLFAvoid a possible NullPointerException in XSLFShape.selectPaint()
add60724SS_CommonImplement 'ignore hidden rows' variations for existing implemented variants
fix63264SS_CommonConditional Format rule evaluation calculates relative references incorrectly
fix61652SS_CommonFix NPE in EDATE function when date evaluates to an invalid value
fix62151POIFSWork around illegal reflective access in Java 9+ when freeing buffers
add63029OPCOPCPackage Potentially clobbers files on close()
add62980SS_Common XSSF HSSFMake D* functions ignore case in headings
fix60977XSSFAdding custom properties creates invalid .xlsx file on second write
fix60460SL_CommonNull pointer exception in ExternSheetNameResolver.prependSheetName method
fix60845XSSFFix copying styles/conditional formatting
add63054SS_Common XSSF HSSFImproved evaluation of array formulas with errors in arguments
fix63047POI_OverallMake POILogger subclassable
add62904SS_Common XSSF HSSFSupport array arguments in IF and logical IS*** functions
add63028SL_Common XSLF HSLFProvide font embedding for slideshows
fix61532SXSSFFix setting values/types during formula evaluation for SXSSF
fix62629OPCAllow to handle files with invalid content types for pictures
fix62839SL_CommonFix MathX.floor for negative n
fix62884SL_CommonSheetnum is not checked in InternalWorkbook.setSheetHidden()
fix62886OPCRegression extracting text from corrupted docx files
add63017SL_Common XSLFRemove rows from a XSLFTable
add60656SL_Common XSLF HSLFEMF image support in slideshows
add62365XSLFSVG image support in XSLF
addgithub-136XSSFSupport GEOMEAN function
fix63011OPCMultiple digital signature in excel file broke first signature
fix62999SL_CommonIBM JDK JIT causes AIOOBE in TexturePaintContext
fix62994POI_OverallIBM JCE workarounds
fix62966SL_Commoninit presetShapeDefinitions.xml fail under IBM jdk
fix62953SL_Common XSLF HSLFRendering of FreeformShapes with formula fails
fix63005POI_OverallRemove support for reading files that have XML entity definitions
fix63013XWPFadd XWPFRun setLang method
fix63240XSSFRemove unnecessary synchronization on DocumentHelper.newDocumentBuilder and SAXHelper.newXMLReader
fix61652SS_CommonFix NPE in EDATE function when date evaluates to an invalid value
fix63264SS_CommonConditional Format rule evaluation calculates relative references incorrectly
add60724SS_CommonImplement 'ignore hidden rows' variations for existing SUBTOTAL function variants
fix63268SS_CommonFix issue with CellUtil.setFont adding unnecessary styles
fix61700SS_CommongetForceFormulaRecalculation() returns wrong value
fix63292SS_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
fix59773POI_OverallMove loop invariants outside of loop for faster execution
fix59834POI_Overallpoi-ooxml pom.xml should include dependency on poi-scratchpad
fix62690POI_OverallMissing Maven dependency to commons-math3
fix62692OPCWildFly XML parser not properly supported - Property 'http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit' is not recognized
fix62699POI_OverallDownload page must link to https://www.apache.org/dist/poi/KEYS
fix62733XSLFXSLFBackground setFill() can corrupt the document
fix62735XSSFpoi-ooxml 4.0.0 should have dependency on curvesapi 1.05
fix62740XSSFXSSFTable constructor automatically assigns invalid (non-unique) column IDs
fix62768OPCOPCPackage#close() method is incorrectly synchronized
fix62796POI_OverallRemove XML Event parser code from PackagePropertiesMarshaller
fix62800XSLFFix null pointer exception if a picture shape has no blip id
fix62805POI_OverallFix Old-Xerces build issues
fix62805XSLFXSLFTableCell#removeBorder(BorderEdge.right) removes the bottom edge not the right edge.
fix62811POI_OverallPOI Encryption didn't work with 4.0.0 but did work with 3.17
fix62951POI_OverallFileMagic not correctly identified
fix62949SL_CommonSlideShow rendering - keyframe fractions must be increasing
fix62921POI_OverallProvide OOXMLLite alternative for Java 12+
fix62625POI_OverallHandle off-spec, variant REFERENCE_NAME record structure in VBAMacroReader
fix62624POI_OverallHandle module name mapping in VBAMacroReader
fix62836SS_CommonSupport TREND function
fix62859XWPFRare NPE while creating XWPFSDTContent
add62373SS_CommonSupport for FREQUENCY function
fix62831POI_OverallWorkbookFactory.create support for subclass of File, eg from JFileChooser
fix62815XSSFXLSB number extraction improvements
fix62373SS_CommonSupport FREQUENCY function
fix62742POI_OverallAdd common-compress jar to bin zip/tgz
fix62747POI_OverallUpgrade bouncycastle dependency to 1.60
fix62736XWPFRelations on XSLFPictureShape were removed unconditionally
addgithub-109XDDFDefine XDDF user model for text body, its paragraphs and text runs
addgithub-123XSSFImport chart on drawing
fix62746XDDFSupport axIds in XDDF
fix60509XSSFXSSFWorkbook.setSheetName() does not update references in charts
fix59625XWPFLocalisation (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
remove62649POIFSRemove OPOIFS* (breaks backwards compatibility)
fix61589XSLFImporting content does not copy hyperlink address
fix62587XSLFrepeated call to XSLFSheet.removeShape leads to java.lang.IllegalArgumentException: partName
fix62513OOXMLDon't try to parse embedded package relationships
add59268OOXMLWork on providing an updated version of XMLBeans
fix62451HPSFDocument last printed in the year 27321
fix60713SXSSF XSSF OPC(S)XSSFWorkbook/POIXMLDocument.write(OutputStream) closes the OutputStream (breaks backwards compatibility)
add62452OPCExtract configuration while verifying XML signatures
fix62187OPCCompiling with Java 10 fails with ClassCastException / use commons-compress (breaks backwards compatibility)
fix62355POI_OverallUnsplit packages for Jigsaw / Java 9 compatibility (breaks backwards compatibility)
fix62041SL_CommonTestFonts fails on Mac
fix62051XSLFTwo shapes have the same shapeId within the same slide
fix61633XSLFZero width shapes aren't rendered
add62037SL_CommonSlideNames should not be null but have a default as if accessed by VBA
fix62381SL_CommonFix rendering of AutoShapes
fix59893POI_OverallForbid calls to InputStream.available
fix61905HSSFHSSFWorkbook.setActiveCell() does not actually make the cell selected in Excel
fix61459HSLFHSLFShape.getShapeName() returns name of shapeType and not the shape name
add62319SL_CommonDecommission XSLF-/PowerPointExtractor (breaks backwards compatibility)
add62092SL_CommonText not extracted from grouped text shapes in HSLF
add62159OPCSupport XML signature over windows certificate store
add57369XDDFAdd support for major and minor units on chart axes
add55954XWPFAdded methods to position table
add61947POI_OverallRemove deprecated classes (POI 4.0.0)
add55954XWPFAdd functions to get, set, remove outer borders for tables
addgithub-72XDDFDefine XDDF user model for shape properties to be shared between XSLF, XSSF and XWPF
add61543XSSFDo not fail with "part already exists" when tables are created/removed (breaks backwards compatibility)
add61550POI_OverallAdd more information to exception text and verify that it is thrown (breaks backwards compatibility)
add61609POI_OverallAdd .gitattribute file and set lf for one sample-file (breaks backwards compatibility)
add61797SL_CommonEmbed Excel / Ole objects into powerpoint (breaks backwards compatibility)
fix61943SL_Commonnarrow generics definition because of tighter java9 checks
add61942OPCRefactor PackagePartName handling and add getUnusedPartIndex method
fix61941POIFSMove Ole marker generation to Ole10Native
fix61940POI_OverallReplace ClassID statics with enum
add61939OPCProvide schema for AlternateContent - provide new ooxml-schemas-1.4.jar
fix61787HSSFChange how deleted content is detected to not incorrectly see too much text as deleted, this was introduced with bug 58067
fix61798HSSFFix usage of getLastCellNum() when calculating worksheet dimension during saving
fix61911HWPFAvoid IndexOutOfBounds access when reading pictures
fix61765HSSFSupport third party tool generated files using WorkBook as their POIFS directory name
fix61881HSLFRegression in ppt parsing: typeface can't be null or empty
addgithub-68XDDF XSLF XSSF XWPFShare chart data implementation between XSLFChart, XSSFChart and XWPFChart through XDDF
fix61809HPSFInfinite loop in SectionIDMap.get() and .put()
add60887XSSFSurface XSSF Header/Footer Attributes
add61730SS_CommonCellRangeAddresses support iterating over their CellAddresses
fix61727SS_CommonCellRangeUtil merge cell ranges broken for certain orders of arguments
fix57517HSSFFix various situations that were handled incorrectly in HSSFOptimiser
add61671XSLFXSLFSlide does not contain isHidden and setHidden like HSLFSlide does
update61630XSSFPerformance improvement to XSSFExportToXML
add58068XSSFAdd a method to pass the actual Color to StylesTable.findFont()
fix61096POIFSAdd support for modules in VBAMacroReader
fix61033XSSFAdd XSSFWorkbook.setCellFormulaValidation() to control if formulas are validated during Cell.setCellFormula()
fix61148SXSSFFix calculating/setting formula value
fix61064SS_CommonSupport behavior of function CEILING in newer versions of Microsoft Excel
fix61516SS_CommonCorrectly handle references that end up outside the workbook when cells with formulas are copied
add60737XSSFAdd endSheet() to XSSFEventBasedExcelExtractor
fix59747OPCExchange order of writing parts into Zip to allow some tools to handle files better
addgithub-69SS_CommonSupport matrix functions
fix60499OPCDeleting a picture that is used twice on a slide corrupt the slide
fix60279POI_OverallBack-off to brute-force search for macro content if macro offset is incorrect
add61528XSSFPivot table enhancements
fix61906XSSFadd API for working with RichStringText
fix61792SS_CommonAvoid iterating over chars (use codepoints instead)
fix62254SS_CommonUpdate OFFSET function to support optional values
update62435XSSFRename getAllEmbedds method to getAllEmbeddedParts (getAllEmbedds is retained but deprecated)
update62438POI_OverallReplace org.apache.poi.openxml4j.util.Nullable with java.lang.Optional (breaks backwards compatibility)
fixgithub-90XSSFChange default DSIG signing algorithm to SHA256
fixgithub-107SS_CommonSupport AREAS function
fixgithub-110XWPFRenames org.apache.poi.xwpf.usermodel.TextSegement to org.apache.poi.xwpf.usermodel.TextSegment (breaks backwards compatibility)
fixgithub-114XWPFBetter support for Footnotes and Endnotes