The change log for the current release can be found in the home section.
Removal of deprecated classes and methods that were marked for removal in v3.17Various modules: add sanity checks and fix infinite loops / OOMs caused by fuzzed dataOPC: fix linebreak handling on XML signature calculation (#61182)SS Common: fix number formatting (github-43/52, #60422)SXSSF: fix XML processing - unicode surrogates and line breaks (#61048, #61246)POI OOXML-Schema lookup uses wrong classloaderHandle ruby (phonetic) elements in XWPFRunPushbackInputStreams passed to ZipHelper may not hold 8 bytesSupport formula evaluation with functions containing more than 127 argumentsFix issue with number formatting in non-default localesFix issue where carriage returns were being escaped as line feedsDo not replace Unicode Surrogate chars with ? when writing SXXSF sheetsUnify escher shape id allocationUse unsynchronized xmlbeansAdd more sanity checks before allocation of byte arrays in HEMF/HWMFAvoid infinite loop with corrupt fileAvoid OOM in hpsf with corrupt fileFont group handling / common font interfaceAvoid infinite loop with corrupt fileHandle zero-length headerfooter and 2 byte WriteProtectRecordRoundUp and RoundDown functions round incorrectly in some scenariosSupport number formats with trailing commasFix bug that allowed IOUtils.skipFully to enter infinite loopMore helpful exception on unsupported old MS Write WRI filesRefactor and unify toString/toXml in DDFInvalid signature created for streamed xlsx fileXSSF: improved support for XSSFTablesHSLF: various fixes in table supportHPSF: reworked to cover edge cases and better support non-latin charsetsSL Common: fixed rendering of preset-shapesHWPF: support for Binary RC4 / CryptoAPI de-/encryptionXSSFDrawing.getAnchorFromParent handles CTOneCellAnchor incorrectly, ignores CTAbsoluteAnchorOutput file get corrupted with SXSSFWorkbook and "chart sheet"Allow for extra bytes in FormatRecordAdd formula support for LOOKUP(lookup_value, array)Text with Japanese characters overflows textboxXSSFTable improved support for creating columns and setting table areas, without needing to use CT classesXSSFTable should format numeric/date cells when used as Column Header names as Excel doesEn-/decryption support for HWPFRound trip workbook encryption and decryptionXSSFDrawing.getShapes() returns zero if sheet has more than one embedded OLE objectFix preset shape rendering and shadingAllow workbooks to contain more than 32k namesAllow XSSFNames set with a long name that looks similar to a cell addressAdd lock/unlock sheet protection and tab colorsSpeed up Irr() formula evaluationAdd a function to convert an HSSFWorkbook to an HTML document from an InputStreamfix NPE when iterating over paragraphs in certain *.docx filesDecrease execution time and memory consumption when adding XSSFPictures to an XSSFWorkbookInvalid "last printed" summary field valueText extraction: Don't include the text "null" for empty cellsOutOfMemoryError parsing a word fileVarious HPSF related fixesCall to XSSFReader.getSheetsData() returns duplicate sheetsFix order of two built-in formatsExtract Excel 2013 absPath info from xlsbHSLFTable.setRowHeight sets row height incorrectMultiple embedded objects on same sheet are ignoredGrid and rowspan calculation in table cells is wrongSupport for "PolylineTo" as well as existing alternate spelling "PolyLineTo"add initial streaming, read-only support for xlsb filesSL Common: various rendering issues resolvedvarious charset related fixes in SS Common, XSSF and HWPFCheck for duplicate relation-names for notes similar to the fix for slides (fixed via bug 55791)Correct behavior of function DGET with multiple result entries but only one non-blank. Thanks to Patrick Zimmermann for the patchFix charset handling in HWPFOldDocumentAdd initial streaming, read-only support for xlsb filesAllow user to select or ignore phonetic strings in shared strings tableSlide import delete unrecognized elements in group shapeBlank layout was not foundSupport Chinese and Japanese date formatsShift shared formulas when shifting rows in a sheetRendering issue with background and shape overlayed by imageArrayIndexOutOfBoundsException in EvilUnclosedBRFixingInputStreamThe third-party jar for commons-collections4 is now required for handling of OLE2 propertiesPrimitive (experimental) EMF/WMF text extraction supportUnicode and internationalization improvementsFormulaParser can't parse external references when sheet name is quoted, thanks to Ignacio HR for the patchAdjust pattern to better handle non-ASCII characters in Month-names which can appear since Java 8, thanks to Patrick Metz for the patchMissing XSSFRelation.CUSTOM_PROPERTY generates POIXMLException on cloneSheet() method, thanks to Samson Tesfay for the patchDataFormatter parses months incorrectly when put at the end of date segment, thanks to Andrzej Witecki for the patchUnlink hyperlinks node if all hyperlinks removed from a sheetAdd rudimentary read-only capability for EMFSupport embedding OLE1.0 package in XSSF / SS CommonPartial support for unicode sheet namesParse Content-ID for inline images in MAPIMessagesFix performance problem with XPath parsing in XSSF import from XMLNPE when reading a document containing an embedded pictureXSSFGroupShape nestingExtractor for *SSF embeddingsSS Common classes for *SSF shapesMake loggers final and make throttled log actually work, thanks to PJ Fanning for the patchWorkdayCalculator calculateWorkdays does return wrong value for same day input, thanks to Fabio Heer for the patchCannot specify Interline spacing for paragraphsUnable to add image to Word document headerMixed fonts issue with Chinese characters (unable to form images from ppt)Remove deprecated classes - remove constructors with PackageRelationship argumentAdded try/catch block to swallow NPEEncode some special characters when setting title/text for validation text-boxesCreating pictures in PowerPoint slides requires scratchpad-jar for adding WMF imagesRemove deprecated classes - deprecate Mutable* property classesCheck for actual Excel limits on data validation title/textTableCell.getTextHeight() returns NullPointerExceptionInitial work on adding a Gradle build, the Ant based build is currently still the official buildsystem, but there are plans to replace this with Gradle in the futureAdd support for mixed-length cipher/hashes in password protected files typically used by Office for MacAdd CryptoAPI and encryption write support for HSSFImprove support for reading VBA macrosExamples to encrypt temp files in SXSSFRemove deprecated classes (POI 3.16) - remove StylesTable.getNumberFormatAt(int)Handle corrupt PICT streamsUnable to create pptx file by potx file using Apache POIAdd setFormattingRanges() to interface ConditionalFormattingExamples: encrypt temp files created when unzipping or zipping an SXSSF workbookTable row isRepeatingHeader and isCantSplit throw NPEHandle an SdtCell that has no SdtContentCellHandle an SdtBody that has no SdtPrCellStyle support for "Quote Prefix" aka "123 Prefix"Issue opening password protected xlsxRefactor Header/Footer creation to allow table in header/footer. No longer creates empty paragraph in header/footerPopulate dimension of XSSF Worksheet when writing the documentAdd 'yyyy-MM-dd' as a possible format for date metadata items in OPCGracefully handle AIOOBE in reading potentially truncated pictstreamAvoid possible NullPointerException when exporting to XMLDeprecate xslf.usermodel.Drawing* - was: Can't change text of DrawingParagraphPartial v5 Pointer and Text Extraction supportAdd "unknown" ShapeType for 4095Fix handling of rich-text unicode escapes with lowercase hex-charsreduce time needed to lookup document relationshipsFix problem with Days360 method for the month of februaryGeneral: Enhance the Gradle build to allow to run API comparisons against previous releases using the Japicmp toolbackground image ignored on slide copycreate drawings when workbook contains non-sequential drawing indicesVarious improvements for reading VBA macrosProblems with line style when converting ppt to pngCheck for in-use drawing part names and use next available, when creating a new sheet drawingnamed range validationRegression in getting and setting anchor type introduced in 3.15AES encrypt temporary files and workbook on diskimage is incorrectly resized if custom row height is setnamed range sheet index not updated when changing sheet orderRegression: Powerpoint text extractor from footer of master slideClassLoader workaround for OSGI when processing OOXML filesRegression: types in HSSFClientAnchor.setAnchorType() were changed, breaking Jasperreports POI supportBroken auto fit row height in the cells with word wrapsupport BorderStyle enums in RegionUtilPassword protected files with "Microsoft Enhanced Cryptographic Provider v1.0"Comments removed from wrong row when removing a row from a sheet with empty rowsFix IllegalAccess exception caused by loggerSupport Table (structured reference) sources in PivotTablesAdd initial Gradle buildHSSF, HSLF, HPSF, and HWPF support for writing out to a File,
including an existing open file (#)Various improvements to HSSF and XSSF.XSSF performance improvements for large numbers of named ranges.Progress towards enums rather than ints for various typesCellStyle#BORDER_HAIR and #BORDER_DOTTED were swapped to correctly
reflect the official names and to be consistent with BorderStyle enum.
HAIR has smaller dots than DOTTED.Removal of deprecated classes and methods detailed on bug Fixed memory leak in FileBackedDataSourceClose open file handles before raising an exceptionD* function refactoringsFix DGET function behaviour with empty cellsError adding Comments into cloned SheetsDataFormatter should return TRUE or FALSE for boolean cell valuesSupport merge cells within a table rowAdd cells on the fly to the evaluation sheet cache on cache missNPE in XSLFTextParagraph.getDefaultFontSize()Add Apache commons-collections4 dependencyXSSFFormulaEvaluator.evaluateAll() should mirror HSSF and use any setup referenced workbooksIncorrect evaluation of SUBTOTAL with composite intervalHandle setting pre-evaluation string correctly in SXSSF as wellClarify and refine JavaDoc of various close() methods to consistently state that close() invalidates the objectHSSF, HSLF and HPSF support for in-place writing to the currently open File (requires the POIFS/NPOIFS was opened from a read-write File)HSSF, HSLF, HPSF and HWPF support for writing out to a new File - normally faster than writing to an OutputStreamD* formula evaluation from blank cells in database headersExcel does not handle conditional formatting based on formula correctly unless recalculation is forcedWorkdayFunction does not read the area with holidays correctly to calculate work daysAllow reading of footnote and endnote propertiesUsing HSSFWorkbook#setSheetOrder to move sheets to the end corrupts bspos value in WorkbookRecordListSheet.shiftRows incorrectly shifts merged region if there exists another merged regionmigrate hyperlink constants from Hyperlink to HyperlinkType enummigrate cell alignment constants from CellStyle to HorizontalAlignment and VerticalAlignment enumsmigrate cell type constants from Cell to CellType enumcorrectly recognized URL hyperlinks containing a hash markadd Sheet#getHyperlink(CellAddress)enable custom zip streams via OPCPackage.open(ZipEntrySource)migrate fill pattern constants from CellStyle to FillPatternType enumGet and set last modified by user propertyAttach cause of exception when marshalling a Zip Packageclear cached EvaluationWorkbook and EvaluationSheetvalues from WorkbookEvaluatorfixed memory leak in LocaleUtilOPC support for a wider range of timezone'd created and modified date formats in package propertiesXSSFTable.getRowCount off-by-one errorXSSFTable needs a method to reset start/end Cell Referencesconvert FormulaType class to enumimprove performance of row shifting on sheets that contain commentsfix NPE from HMEFContentsExtractorCreate temporary directories that are deleted on JVM exitRemove deprecated classes (POI 3.15) - o.a.p.hssf.model.*Shape classes removedMove PaneInformation from HSSF to SS packageWhen setting SAX features, handle Error too (eg from Google AppEngine)Make lookup and creation of named ranges constant-time instead of linear in the number of ranges in the workbookFix regression in the handling of empty passwords for workbook protectionRename XSSFPaswordHelper to XSSFPasswordHelperinitial work on extracting VBA macros (#)remove deprecated classes (#)various X/HSLF fixes for table and color handlingXSSF: formula evaluation performance improvements (#)various fixes for merged regions in Common SSReplace Hashtable with HashMapXSSF support for files from certain alternate tools where the row XML is missing the row numberZipSecureFile throwing "zip bomb detected" exception when writing SXSSFWorkbookXSLFPictureData support for TIFF imagesPOIXMLProperties helper methods for reading and changing OOXML document thumbnailsadd Sheet.removeMergedRegionsmove CellRangeUtil to o.a.p.ss.utilcorrectly check array formulas for intersection when adding merged regionsProvide a close() method and implement Closeable on all OLE2-based POIDocument classescorrectly parse literal data validation constraintsRemove deprecated classesPrint row and column headingsCreating transparent Freeform object does not result in transparent shapeSetting background color in slide masterRemove related cell-comments when removing a rowInitial steps to allow to compile against Java 930% faster formula evaluationFormula parsing and evaluation containing structured references (data tables)Parsing absolute entire-row CellReferencesError when trying to access XSLFTableCell properties like textHeight, lineWidth, etcRemove deprecated classes (POI 3.15) - remove BuiltinFormats.getBuiltinFormats()allow DataFormatter to use Locale-aware number grouping separatorTable isn't exported on convert slides of a .pptx slide show to a PNG/SVG imagesupport alpha channel on solid colors (fill, line, text)remove creation of empty paragraph in XSLFTextShape.addNewTextParagraph()XSSFPivotTable::addColumnLabel sets the cell type of a cell outside of the source data areaInvalidFormatException because of Absolute URI forbiddenRemove deprecated classes (POI 3.15) - use FormulaError instead of ErrorConstantsBehaviour for headers and footers of slides is inconsistent between slideshows created in 2003 and 2007get and set Comment addressesCannot add a picture on a slide that already have an image with an hyperlink on itperformance regression: DataFormatter no longer caches formatsSetting text direction on a table cell has no effectRegression: Fix handling of whitespaces in formulas after it was slightly broken by the changes to support the intersection operatorGet and set sheet tab colorLookup IndexedColors by indexDeprecate CellUtil methods that do not need a workbook parameterMark HSSFCellUtil for removal, replaced with Common SS CellUtilVBA Macro reader and extractorDon't fail to open the spreadsheet if no TabIdRecord is foundFix some cases where file-handles were not closed properly, mostly when the documents could not be opened correctlyFix IndexOutOfBoundsException in PlfLfo.add()unify setting cell border line style with BorderStyleremoval of deprecated elements (#)avoid XmlBeans calls to piccolo parser which caused OOM in rare cases (#)support for passwords longer than 15 chars for write-protection or binary formats (#)various NPE fixes in XSSF/HSSFfixes for color handling in XSSF and support for system colors in Common SLAdd a cloneSheet() which directly sets the sheetname to allow to avoid a costly renaming of sheetsRegression in 3.14 on OPC files with less common timezone formats in the core propertiesAdjust implementation of COUNTBLANK to be conforming to Excel, empty strings are counted as blank as wellGracefully handle null-values in Cell.setValue() for Date and Calendar similar to Stringfix XSSFColor.hasTint which incorrectly used the alpha channel, add XSSFColor.hasAlphafix NPE raised by XSSFSheet.getCellComments()copy non-validating XSSFSheet.addMergedRegionUnsafe from bug 58885 to Sheet interfacebold xml value of "1" treated as falseAdd support for system colorsAdd Workbook.getNames() to allow to query for names that appear multiple timesAvoid using an existing file-name when creating a new slide, it could still be left over from previous partial removalTry to avoid NullPointerException by setting the cell to BLANK instead, when changing cell-type and a formula leads to null-stringPassword gets truncated when using passwords longer than 15 characters for the function protectSheet()Correctly calculate char index ranges for HWPF in the TextPieceTableFix problem with tables in documents at pos 0Fix a number of edge-cases where file-handles would be leakedRemove deprecated classes (POI 3.15) - *Workbook.setRepeatingRowsAndColumns()Remove deprecated classes (POI 3.15) - org.apache.poi.hssf/ss.util.RegionOut of Memory when extracting text from attached filesMore helpful exception when POIFSFileSystem is given a raw XML fileMore helpful exceptions when OPCPackage is given OLE2 or ODF or raw XML filesCommon: New version of ooxml-schema and ooxml-security jars which are linked to custom safe type loaderCommon: OPC relation fix for multiple same named ids ()Common: Update third-party dependencies: commons-logging, commons-codec, xmlsec, bouncycastleExcel: Allow to set multiple cell style properties at once ()Excel: Add API for inserting ignored warnings into XSSF sheets.
This can be used e.g. to suppress 'number stored as text' warnings. ()Powerpoint: unify hyperlink handlingHSLF: various fixes for parsing and renderingWMF: new API for WMF parsing and rendering (for Powerpoint)XWPF: various fixes for handling paragraphs and tablesProvide a better error message for OOXML strict format which we do not support yetAdjust handling of missing row-records as it seems LibreOffice/Excel are handling such documentsRender individual slideshow shapesExtractorFactory should give a more helpful exception on old Excel files too old for ExcelExtractorXSSFChart support for setting chart titlesPrevent NPE in XWPFTableCell's getVerticalAlignment() from Prasad BabuXSSFSheetXMLHandler fails to extract content if namespace is included in qNameReject single-cell merged regionsMake OFFSET() allow missing optional height and width parametersHandle documents with a picture-only headerRegression caused by fixing bug 56295: Don't try to unset fill color if it is not set to avoid invalid access inside the Xml structuresCell.setCellValue((String)null) should be treated as an empty cell on SXSSF as well, to avoid a NPE when autosizing columnsfixed NPE when adding pictures with existing non-picture media files (e.g. movies)Fixed performance regression after fixing bug 58443 when adding a merged region to an XSSFSheetRaised xmlsec version to 2.0.6Cannot open link correctly which insert in pptSupport hyperlinks in HSLF shapes and textrunsReturn SpreadsheetVersion from WorkbookFix NPE when calling HSLFTextRun.setHorizontalCentered()Set multiple cell style properties at onceSupport for WMF renderingAdd API for inserting ignored warnings into XSSF sheets. This can be used e.g. to suppress 'number stored as text' warningsGetters/setters/removers for the additional well-known document summary information properties from Office 12Support hyperlink extraction when rendering slidesPOI does not always read all the slides in pptx filesProvide some compatibility between HSSF and XSSF in regards to values for CellStyle.setRotation()don't return deleted text when document is in review-modeXWPFParagraph insertNewRun and removeRun work incorrectly for runs after hyperlink/field runsNon-standard namespace-key breaks parsing XLSX filesFix missing adjustment of formulas when sheet-ordering is changedTry to initialize with empty password if not done beforeFix some cases where file-handles were left open, mostly when failing to parse documentsRichTextRun getFontName can not get chinese font nameRecordType has repeat by code type 3009getHeaderText() and getFooterText() duplicate text in sheet.getTextRuns()Set maximum number of data formats to avoid corrupted workbookOverride built-in number formats in XSSFWorkbooksNew AIOOBE in getCell while iterating through a table in PPTMaster styles not initialized when running multithreadedCorrupted .xlsx file created when styles with borders are cloned from other workbooksPromote setting and getting the active cell in a worksheet to Common SSUpdate text styles in HSLF MasterSlideChange underlying data structure in SXSSFRow to use a TreeMap instead of an array to store SXSSFCellsReplace MissingCellPolicy class with enumAutosize columns on SXSSFSheets considering both active window and flushed rowsAdd support for shifting hyperlinks when shifting rows on a sheetImplement Comparable interface in HSSFRow, XSSFRow, and SXSSFRow classesTitle placeholder not recognized by Powerpoint 2003Pictures cannot be removed from a slideReplace ClientAnchor anchor type constants with AnchorType enumReplace Sheet.setZoom(num, den) with Sheet.setZoom(scale)Remove deprecated functionsGet all cell comments on a sheet with Sheet.getCellComments()Add CellAddress class, to be used instead of CellReference when the concept of an absolute/relative reference is not applicableAdd custom safe XmlBeans type loader / rename vendor specific schema packagesSigning failed after deletion of first sheetFilling an existing ppt table stopped working with 3.9When saving PPT to PNG, some text is rendered backwardsShapes drawn wrongly when ppt file converted to imageRemoved most reflection calls on private methods/fields from production code; others are wrapped by AccessController.doPrivileged()XWPFDocument causes SecurityException under SecurityManagerImages in ppt file have wrong width when converting ppt to pngAdd support for HSLF metro blobsBullets are not aligned properly while converting ppt slide to imageDataFormatter correct support for alternate number grouping characters, eg 1234 + #'##0 = 1'234 not 1,234autoSizeColumn incorrectly sizes columns containing leading whitespaceRename misspelled SheetUtil.canComputeColumnWidthAdd getHyperlink and getHyperlinkList to Sheet interfaceAdd support for copying rows in XSSFWorkbooksRichTextRun.setBullet(false) doesn't work, bullets still herePOI-HSLF changeTextInRichTextRun corrupts presentationinserting text or images wipes out boldness and makes everything italicSet cell formulas containing unregistered function namesAdd method to reorganize AreaPtg as top-left and bottom-right referencesProhibit adding merged regions that would overlap with existing merged regionsAdd a limit of the max number of characters that can be extracted to avoid sending applications out of memory with very large documents. Limit can be adjusted via ZipSecureFile.setMaxTextSize() if necessaryRare new aioobe in 3.13 on initialization of a handful of pptsAvoid error if Workbook with empty SharedStringTable is writtenCommon sl unification - copy first paragraph / textrun properties on XSLFTextShape.setText()Common sl unification - converted ApacheconEU08 example to common sl - added missing functionalityCommon sl unification - return null instead of default values for missing borders X/HSLFTableCommon sl unification - use points in HSLFTable.setColumnWidth()Fix appending text to empty HSLFTextParagraphSXSSFCell.setCellValue((RichTextString)null) fixed to work like XSSF and HSSFDataFormatter and CellFormat non-localised support for localised currency formats like [$$-408]DataFormatter cell formatting for things like [>999999]#,,"M";[>999]#,"K";#Fix removing sheet so not to break other existing sheet referencesWork around problem where on Windows systems a Mapped Buffer can still lock a file even if the Channel was closed properlyUpdate commons-logging to 1.2 and commons-codec to 1.10Removed deprecated mixed case getter/setter in XSSFColorFix handling missing option values in financial functions PV, FV, NPER and PMTMake row groups which include row 0 workRemoved deprecated HDF APIImprove column manipulation in XSSF to avoid changes overwriting each otherImprove number formatting to more closely match Excel's behaviourFix row limits for HSSFClientAnchor to allow the full range supported by ExcelAdd CTTableStyleInfo to poi-ooxml-schemas JARconditional formatting support for DataBars, Icon Sets / Multi-States, and Color Scalesvarious improvements in spreadsheets formula and cell reference handlingenforcement of locale and timezone-aware handling through forbidden-apis check,
locale and timezone can now be switched via LocaleUtilcommon api for slideshow (common sl) is now available
be aware of several api breaks especially in HSLF text handlingMake XSSF and HSSF consistent on Sheet.getMergedRegions: return empty list if there are noneprovide picture-shape resize that maintains the aspect ratioAdd a simple fix to avoid an NPE when Workbooks have invalid external referencesFix Dev2Hex for numbers larger than Integer.MAX_VALUE and less than Integer.MIN_VALUEAdd support for different datatypes in XSSFImportFromXMLProvide user access to the original image dimensionsFix adding pictures to XWPFRun instancesHandle edge-cases in D* functionWorkbook support for iterating over SheetsReturn correct value in Match-Function with match-type == -1Avoid NPE for RichTextString without font-detailsXSSFFont: reset indexed color flag when setting a non-indexed colorMake DGet and DMin function implementations thread-safeAdjust Locale/Timezone handling to pass forbidden-api-checks and provide LocaleUtil to dynamically adjust the locale and timezone that POI operates onFix DAYS360 handling for US/EU methodCellFormatResult.text should check for nulls as per the javadocFix checks for limit on number of styles in XSSF/SXSSF, fix more than 32k styles in SXSSF workbooksReadOnlySharedStringsTable now handles workbooks with an empty SST partIntersection formulae are now supported in XSSFCellReference upper-case check for #REF!, and javadoc improvementsMore CellReference unit testing coverageThrow InvalidFormatException as documented instead of IllegalArgumentException in WorkbookFactory.create()When adding a picture to a XWPF header or footer, attach it to the right partImprove the javadocs for XSSFFont and Font getFontHeight methodsDon't hardcode dcterms as namespace alias in the attribute, but expect the actual alias that is used in the corresponding elementXSLFSlide.draw is not working with text embedded in PPTXgetSlideMasters() returns the master slides in the incorrect orderXSLFFreeformShape ignores quadratic bezier curvesprovide a mechanism to find slide layouts by nameSTYLE: ShapeContainer interface makes internal getShapesList() redundantThe current picture handling uses raw integers for types and index, replace with enum and referenceApparently Maven uses plurals for all artifacts except javadocs, so tweak our naming to make it happyUse input stream rather than byte array for checksum etcSXSSF support for evaluating formula cells, provided the cell and all its references are within the current windowAvoid NPE in cleanup if NPOIFSFileSystem is opened on a locked File under WindowsMerged common_sl branch to trunkFix creating comments for XSSF/SXSSF, regression was introduced via bug Fix creating comments for XSSF/SXSSF, regression was introduced via bug Possible data corruption in hasPOIFSHeader and hasOOXMLHeaderAllow processing of non-OOXML core namespace packagesConditional Formatting support for DataBars, Icon Sets / Multi-States, and Color ScalesThe default POIFS implementation has been switched to NPOIFS. If you request a POIFSFileSystem, you will now get a NPOIFSFileSystem-based one. OPOIFSFileSystem remains for those who still want the old implementationConditional Formatting support for the common Color class, in addition to previous color shortsAgile encryption - wrong checksum calculationRegression: NullPointerException when setting cell value to nullAdd a method for obtaining all merged regions on a worksheet. This is faster for XSSFSheet than obtaining each individually by iterationAdd basic support for VBA macro-enabled workbooks (xlsm)Fix parsing the email submission data when id contains a hyphenBetter handle years in mail-messages between 1980 and 1999WMF extraction failing in Tika for older PowerPoint FilesLimit number of bytes (by counting them) while opening office docszip bomb preventionBiff8RC4 xorShort returns wrong value for unsigned shortsFix possible NullPointerException when empty cell is included in Sumif calculationLog ForgingImprove AreaReference to take account of the spreadsheet format version when determining whether a reference is whole-columnFix and verify in CI builds that we can compile most examples without requiring scratchpad-jar, update documentationCorrectly handle unicode strings in NameCommentRecordAutomatically verify that the resulting source-packages can be builtFix potential NPE in DateUtil for invalid datesFix potential NPE in XWPFParagraph.getNumFmt()Use BigDecimal in some cases in DataFormatter.formatRawCellContents, to avoid rounding problems on JDK8Use specific ID value which prevents Excel from turning comments into giant curved arrowsremove limitations within XSSF - up to 64k cell styles () and 65k comments ()fixed XSSF cloning issues - for sheets (), styles (), pictures ()Fix shifting comments with shifted rows ()Initial XWPFStyles support for working with default document paragraph and run stylesIf an empty file or stream is given to WorkbookFactory.create, give a more informative exception - EmptyFileExceptionSort PackagePart returns from OPCPackage by name considering numbers in filenames, so Image10.png comes after Image9.png, fixing problems with XSLF adding 10+ images to a slideHandle >32,767 cell styles and formats in XSSF (file format limit is 64,000)Allow WorkbookFactory.create methods to open xlsx files protected with the default passwordAdd overloaded WorkbookFactory.create methods which take the spreadsheet passwordWhen removing a SXSSF sheet, ensure temp files associated with it are disposed ofIf a XSSF shape has a buFont but no bullet character, mirror Excel and treat as un-bulletedFix setSheetName with ISERROR on XSSFAdd ISERR() functionAvoid XmlValueDisconnectedException when removing a XWPFRun from a XWPFParagraph by removing from IRuns as wellSkip null properties in PropertyTableBase, which is how PropertyFactory reports unsupported POIFS propertiesAvoid NPE on HSLF Tables with a top position of -1Throw exception if max string length of 32767 chars is exceeded in XSSF and SXSSFFix handling of bold formatting in example application 'ToHtml'Use fixed encoding when extracting text in WordDocumentFix shifting comments with shifted rowsFix cloning of styles across workbooks and handling of default value of attribute applyFillRemove limitation of 1024 comments per WorkbookFix cloning of sheets with picturesMore helpful ExtractorFactory exception if given a Visio VSDX ooxml fileInclude CTTblGrid in the smaller poi-ooxml-schemas jarAvoid PartAlreadyExistsException when removing/cloning sheetsAdditional check for supported string-length to avoid creating broken XLS files later oneWhen saving an OPCPackage with no Core Properties (eg from Jasper Reports), ensure they are always added even if not yet usedHandle documents with a picture-only headerChange from XMLEventFactory.newFactory to XMLEventFactory.newInstance, for IBM JDK CompatibilityAdd method in SXSSFSheet to directly set row OutLineLevelAdd workaround to read empty SSTRecord where Excel puts random number in unique-strings-count-fieldAdd POI-specific error codes to FormulaErrorStart on common interfaces for Paragraphs and Character Runs for HWPF and XWPFDouble Strikethrough support for XWPF runs, along the lines of the HWPF supportHandle XSSF .xlsx files with no shared strings table in read-only modeExtractorFactory opening of OPCPackage from File should be read-only by default, as text extracting will never change thingsXSSFSheet support for getDrawingPatriarch(), alongside the existing createDrawingPatriarch() methodTIKA-1515 - Handle Excel 3 files with a 0x8001 codepageAdd methods to set margins in sections of HWPF documentsReturn #VALUE! for circular referencesAdd methods to query outline level for HSSF and XSSFHandle PP97_DUALSTORAGE streamsSlideShow.removeSlide makes PPT corruptedMapping of symbol characters to unicode equivalentAdd support for cropped images in Slide.draw()Add initial implementations of DMIN and DGET functionsSupport for Office Binary Document RC4 CryptoAPI Encryption for HSLFSupport for Office Binary Document RC4 EncryptionFix get/setFirstVisibleTab() for XSSFWorkbookProperly initialize chart-axis datastructure when loading a spreadsheet which already contains oneFix NullPointerException for RichText strings with no formatting for some runsAvoid IBM JDK fail immediately during loading some POI classes, note: IBM JDK 1.7 or higher is needed because of XML APIsSwitch the cache in DateUtil.isADateFormat() to ThreadLocals to not have another syncpoint hereNullPointerException in XSSFCell Constructor with different MissingCellPolicyXSSFDataValidation ignores "allow blank" read from sheet, assumes trueAdjust the active sheet in setSheetOrder()Adjust the active sheet in removeSheet()Add missing ArrayRecord.clone()Expose the version information from OldExcelExtractor3+ XSSF column label names for pivot tablesXSSF custom column label names for pivot tablesCorrectly build internal list of styles when styles are addedAdd check for null value of underline w:valBasic text extractor for very old Excel formats such as Excel 4 (Biff4), and
older Excel 5 and 95 formatsXML Signature support for XSSF, XWPF and XSLF ()HSSF and XSSF support for getting existing Data Validations for a SheetHSSF and XSSF formula support for the PROPER function ()XSLF support for adding slide notes ()XMLBeans performance improved when using getXXXList() methods ()Recommended Apache XMLBeans version increased to 2.6.0 (any version from
2.3.0 or later will work though)XSSF support for evaluating formula references to other Workbooks ()HSSF and XSSF support for evaluating formulas with multi-sheet references,
for functions that support that ()HSSF and XSSF Workbooks are now Closeable, so you can call close() to
explicitly free the file based resources when you're done ()NPOIFS now fully supports writing, including streaming write, and in-place
updating of existing entries. NPOIFSFileSystem now surpasses the old
POIFSFileSystem in all cases.XSSF Text Extraction support for Headers, Footers and Comments ()SXSSF Shared Strings optional support ()XWPF Change Tracking support ()HWPF password hash function ()XWPF document protection with password support ()SXSSF support for a system-wide setting of where Temp files get created, via
TempFile / TempFileCreationStrategy ()The minimum Java version has been increased to Java 1.6The minimum Apache Ant version has been increased to Apache Ant 1.8The interface org.apache.poi.xssf.eventusermodel.XSSFSheetXMLHandler.SheetContentsHandler
has had two method signature changes:
endRow() -> endRow(int)
and
cell(String,String) -> cell(String,String,Comment)
All security related changes from 3.10.1 (CVE-2014-3529 and CVE-2014-3574)
are included in 3.11. Thanks to Stefan Kopf, Mike Boufford, Mohamed Ramadan,
and Christian Schneider for their help with these.Please note: You should use xmlbeans-2.6.jar (as shipped with this release)
instead of the xmlbeans-2.3.jar version from old releases to work around
CVE-2014-3574. If you have an alternate XML parser like Apache Xerces
in classpath, be sure to use a recent version! Older versions are likely to
break on setting required security features.Typo in HSSFWorkbook javadocs and quick-guideFix some unnecessary casts, generics, Eclipse warnings, ...Added workarounds to tests for JDK 6 LineBreakMeasurer bugXMLSlideShow.setSlideOrder() produces corrupted CTSlideIdListDeadlock on corrupted PPT fileXML signatures - ignore line breaks in Office 2007 .rels filesBasic text extractor for older Excel 5 and 95 formatsBasic text extractor for very old Excel formats such as Excel 4 (Biff4)ClassCastException in validating xml signatures due to missing xml beans resourcesAdjust active sheet correctly when sheets are movedAdjust active sheet correctly when sheets are removedXSSFDrawing.createCellComment() does not honor dx and dy values passed inPicture method to resize with different scales in width and heightAdd Cell.removeHyperlink() for HSSF and XSSFImplement FIXED functionForm check box extraction with XWPFWordExtractorAdd Sheet.getDataValidations() for HSSF and XSSFAdd Comment.getClientAnchor() for HSSF and XSSFCorrect naming from "Serie" to "Series"Include CTDefinedNamesImpl in the smaller poi-ooxml-schemas jarCould not open macro enabled xlsm file after writing using POI3.11beta2 versionAdd implementation of function PROPERAdd missing HSSFWorkbook constructor javadocsAnd documentation and validation in CellRangeAddress to prevent invalid row/column combinationsSupport for adding slide notesJavadocs and throws clause for WorkbookUtilAdd support for cropped images in XSLFPictureShape.drawContent()added ooxml-security-1.0 to the maven artifactsXSSFImportFromXML.importFromXML() does not support optional elementsUnreadable content when adding multiple comments to cellSheetUtil.getCellWithMerges for getting a cell at a co-ordinate, or the primary one of it's merged region if it's a merged cellXML signature supportIndexOutOfBoundsException in poi decryptorThe minimum Apache Ant version required to build has been increased to 1.8.x or laterAdd a NPOIFSFileSystem constructor with a FileChannel and the read-only optionXSSFRowShifter.updateConditionalFormatting throws IOOBE when there are more than 1 CTConditionalFormattingReplace usages of o.a.p.util.ArrayUtil.copyOf* methods with replacements from j.u.ArraysXSSF locking of specific features not workingFormulas: Fix incorrect evaluation of IF() with ROW()/COLUMN() as else-resultGreatly improve performance of shifting rows in sheets with many merged regionsXSSFColor.getARGBHex() returns wrong color for Excel 2007 xlsx fileFix exporting XML if schema contains ref-elementsXWPFLatentStyles.isLatentStyle always returns true if there is at least 1 lsdExceptionXMLBeans performance when using getXXXList() and other proxy methodsFor XSLF Pictures, provide a way to get the URI of externally linked picturesOn supported XML parser versions (Xerces or JVM built-in, XMLBeans 2.6), enforce sensible limits on entity expansion in OOXML files, and ensure that subsequent normal files still pass fine (CVE-2014-3574)Recommended Apache XMLBeans version increased to 2.6.0 (any version from 2.3.0 or later will work though)Provide a helpful exception, XLSBUnsupportedException, if XSSFWorkbook is passed a .xlsb fileSwitch from dom4j to JAXPThis release is a bugfix release to fix two security issues with OOXML:Tidy up the OPC SAX setup code with a new common Helper, preventing
external entity expansion (CVE-2014-3529).On supported XML parser versions (Xerces or JVM built-in, XMLBeans 2.6),
enforce sensible limits on entity expansion in OOXML files, and ensure
that subsequent normal files still pass fine (CVE-2014-3574).Please note: You should use xmlbeans-2.6.jar (as shipped with this release)
instead of the xmlbeans-2.3.jar version from the 3.10-FINAL release to work
around CVE-2014-3574. If you have an alternate XML parser like Apache Xerces
in classpath, be sure to use a recent version! Older versions are likely to
break on setting required security features.Thanks to Stefan Kopf, Mike Boufford, Mohamed Ramadan, and Christian Schneider
for reporting these issues!On supported XML parser versions (Xerces or JVM built-in, XMLBeans 2.6), enforce sensible limits on entity expansion in OOXML files, and ensure that subsequent normal files still pass fine (CVE-2014-3574)Tidy up the OPC SAX setup code with a new common Helper, preventing external entity expansion (CVE-2014-3529)Security fix CVE-2014-3529: external XML entity expansion. Affects reading OOXML documents.Dropped support for Java 1.5. Java 6 is now the minimum version required to run POI.Tidy up the OPC SAX setup code with a new common Helper, preventing external entity expansion (CVE-2014-3529)Correct XWPF createTOC handling of short style namesIf the start+end row and cell are the same on an AreaPtg, avoid inverting the relative flagHWPF where no parent style CHP exists, use an empty set when processing the style to avoid a NPEWhen shifting XSSF rows with formula cells, if the formula can't be parsed, log + leave it unchanged rather than failingAvoid NPE from XSSFHyperLink when setting the cell it references on a new linkIf an unsupported BofRecord is found for a sheet, warn and skip rather than breakingSupport the ColInfoRecord coming after the cells, rather than before as is normalAllow XSSF formula evaluation to also skip missing external workbook references, if requested, in line with existing HSSF supportXSSF support for creating Pivot TablesFormula Evaluator support for multi-sheet references for those functions which support them, eg SUM(Sheet1:Sheet3!A1:B2)Allow XSSF event model to find + return comments, and use this for the event based .xlsx text extractor. Required backwards-incompatible updates to XSSFSheetXMLHandler.SheetContentsHandlerHPSF thumbnail format tags are Int not UIntAllow a system wide setting of where Temp files (eg for SXSSF) are stored, via TempFile / TempFileCreationStrategyHave XMLBeans request UTF-8 for strings by default, to avoid issues on the odd platform where that isn't already the caseCorrect HSSFOptimiser logic for the case where the to-keep style wasn't previously in useXSSF support for evaluating formula references to other WorkbooksFix border cases in EDATE function: handle RefEval and BlankEval and also return #VALUE, not #REF in case of errorInitial support for XSSF External Links tables, which hold references to other workbooks referenced by formulas and namesIf a cell is of type numeric but has an empty <v/> tag, return as 0Make Workbook be Closeable, so you can call close() to explicitly free the file based resources when you're doneRead text from SDTs at the table cell level, including (sometimes) Cover Page, Table of Contents and BibliographyChange how ColumnHelper finds CTCol instances, to speed up the more common use case when most are wanted for readingHSSFCell should follow XSSF, and allow setting a null-style to return to the default styleFix multithreading bug when reading 2 similar filesFix a copy/paste error in CFRuleRecord.clone() Fix a problem with cells in workbooks becoming disconnectedAdd missing null-check if simple shape does notBug 54400 introduced a problem when removing a sheet with named rangesNoteRecord can sometimes be double-padded if there's no author setHandle date format strings in an iso8601 style format, with a T in themCorrect SXSSF writing of tables when creating from a templateWriting a workbook more than once corrupts the fileOutlook sometimes stores a codepage of ANSI when it means 1252, detect and aliasAdd XOR obfuscation/decryption support to HSSFDateFormat - Rounding of fractionalsExcel 2007 and later allows for more than 3 Conditional Formatting rules per sheet, so change our hard limit to logging a compatibility warningAdd NPOIFS in-place write support, including updating the contents of existing entriesComplete NPOIFS write supportNPOIFS fixes for 2+gb files loaded via File (InputStream is limited to 2gb due to ByteBuffer limits)Avoid a NPE if a comment has no associated NoteRecord (but we still don't know where it belongs)Streaming write support in NPOIFSFix floating point rounding problems with ROUND functionFix SXSSF encodings on EBCDIC platforms, by setting the required encoding explicitlySupport loading .xlsx files with no Styles TableReplace System.err in XSSFSheetXMLHandler with proper loggingFix NPE during XSSFExportToXml export to XML with xs:allFix compare/sorting of nodes in exported XML via XSSFExportToXmlHandle numeric formula values when exporting to XMLHandle date types when exporting to XMLUse default style if the cell style attribute is not presentEnd support for Java 1.5. POI now requires Java 6 or higherUpgrade third party libs to latest versions: commons-logging, commons-codec, log4jAvoid warnings when a TextHeaderAtom is empty and has another straight after, or where there's a TextRulerAtom / MasterTextPropAtom / TextSpecInfoAtom before the Text Chars / BytesAdd Change Tracking support to XWPFAdd password hash function to HWPFAdd document protection with password support to XWPFSupport OOXML ContentTypes which include parametersPPT can't open, fails with "Couldn't instantiate ... StyleTextProp9Atom"HPSF code page strings can be zero lengthSXSSF Shared Strings option supportMixed fonts issue with Chinese characters (unable to form images from ppt)XSSF Event Text Extractor header/footer supportHyperlink with a non-breaking space throws java.lang.IllegalStateExceptionWrong encoding used for non-ASCII characters in text runsExpose the StyleIndex of HWPF CharacterRunsFix StringIndexOutOfBoundsException : Ole10Native.<init> (parsing word file)WorkbookFactory.create() hangs when creating a workbookSupport for COUNTIFS functionInconsistent behavior in HSSFSheet.setAutoFilter() function, also make XSSF work when setAutoFilter is called multiple timesWriting a workbook multiple times produces unreadable contentFix corrupt file problem using TextRun.setTextAIOOBE with missing notes entriesMultiple Saves Causes Slide CorruptionSupport embedding OLE objects into HSLFAdd encryption supportFix StringBuilder logic in DataFormatter.cleanFormatForNumber Fix org.apache.poi.ss.usermodel.BuiltinFormats.java for 0x29-0x2c Avoid using RMI based exception from PropertySetFactory, as it's not needed nor helpfulFix NullPointerException during Xml-extraction from xlsxAvoid IndexOutOfboundsException when setting nested row groupingfix handling of tables in XSSF if there are comments as wellPatch for hiding slides in HSLFFixed auto shapes render problem in pptx filesCellStyle support for get/set Shrink To FitHSSF Row Style XfIndex is 12 not 16 bits of dataOOXML encrypted document fix for cspname being optionalXWPFWordExtractor needs to handle .docx files with neither headers nor footersDataFormatter should format Error cells, returning the Excel error stringPerformance improvement in HSSFCellStyle.getDataFormatString()Performance improvement in DateUtil.isADateFormat(int, String)Support embedding OLE1.0 packages in HSSFSupport embedding EMF/WMF pictures in HSSFFix handling some types of TNEF filesUpdating the index in the LinkTable whenever sheets are removedApply patch to avoid XmlValueDisconnectedException when saving a file twiceAdd support for collapsing rows in SXSSFGive a more helpful error if an Encrypted .xlsx file is passed to HSSFAvoid AIOOBE if a non-existant Xfs is requested for a styleDon't fail in SXSSF if a numeric cell is overwritten with a stringConstants for HAIR and DOTTED border styles are swappedAdd Eclipse project filesWhen creating a temp file, ensure the name isn't already takenExtract text from HSLF tablesSupport for SHA-512 hashes on OOXML protected documents, as used by Office 2013Add fix for XmlValueDisconnectException during shifting rowsFix handling of special case in FormulaShifterFix corruption of Workbook when setting sheet orderFix SimpleFractionException when fraction goes to greater than overflowAdd support for quoting in date formattingDo not make the XSSFSheet invalid during write()MultiOperandNumericFunction.collectValue() currently uses concrete final classes but should use interfaces insteadEndless loop in CellRangeUtil.mergeRanges() when regions are overlappingIntegrate 55292 into XSSF extractors -- extract text from text boxes in xlsx filesTika 792 - Avoid CTMarkup NoSuchMethodException stack trace by adding two beans to ooxml-lite"Fix column grouping in XSSFEnhancements to XSSFSimpleShape (textbox) including: ability to add multiple paragraphs, formatting (read/write) and text extractionAvoid a ClassCastException if a HPSF string property isn't directly stored as a stringHSMF ascii encoding detection should use the CodePage properties where availableHSMF fixed length property parsing should be more forgiving of some type differences from the property defaultSome HPSF documents require UnicodeStrings to be 4-byte aligned, spot these from the otherwise invalid lengthUpgrade version of JUnit to 4.11 to avoid problems when executing unit tests using Apache Ant >= 1.7Avoid issues if the length of a StyleTextPropAtom prop is longer than the parent textFix error message text for a workbook with no sheets when a sheet operation is performedPresence of PLV record shouldn't affect HSSF Data ValidationNot all XWPF SDT blocks need newlinesXSSFDrawing.createCellComment causes CommentsTable to lose reference to comment in cell A1ExtractorFactory does not close files when extracting via OCPPackage.open()NullPointerException in XSSFSheet.getTopRow() when the top row is 1Improve how DataFormatter handles fractionsDon't load XWPF Footnotes twiceControlled content/Form (Std/StdBlock) contentHSSFWorkbook.getAllEmbeddedObjects() needs to recurse into container ShapesExpose from XWPFParagraph the number level and format, if appliedExtract references from XWPF footnotesUpdate License links following ECMA site re-organisationSupport embedding EMF/WMF pictures in HSSF REPT formula support COMPLEX formula support CODE formula support Support Unicode text (TextCharsAtom) in HSLF TextShapeUnhandledDataStructure should sanity check before allocating, not afterSimple wildcard support in HLOOKUP, VOOLKUP, MATCH, COUNTIF Register user-defined functions in instance scope instead of static Support for financial functions IPMT and PPMT Avoid XmlValueDisconnectedException when merging slides Support of statistical function SLOPESupport of statistical function INTERCEPTDon't mis-detect format patterns like .000 as datesSupport unusual .xls files with a BOOK directory entry (normally it is Workbook)EDATE formula supportNPOIFS fix for 0 not -1 padded partially used XBATsIfError handling of indirect referencesIfError support (from Analysis Toolpak)Prevent unreadable content and disallow to overwrite rows from input template in SXSSFFixed XSSF to read cells with missing R attributeEnsure that shared formulas are updated when shifting rows in a spreadsheetSynchronize table headers with parent sheet in XSSFFixed rendering text in flipped shapes in PPT2PNG and PPTX2PNGAvoid NPE in PPT2PNGReplace System.err info messages with a POILoggerimproved performance of DataFormatter with FractionsEnsure that CTHMerge and CTTcBorders go to poi-ooxml-schemas jarFixed extracting text from table cells in HSLFadd support for drop-down lists in doc to html conversionadd workaround for files with broken CHP SPRMsReading combined character styling and direct formatting of a character runConversion to html : Problem in titles number TableRow#getTopBorder() return bottom's borderAvoid exception when parsing OPC relationships with non-breaking spacesAvoid exception when parsing workbooks with DConRefRecord in row aggregateFixed Ant build to support build directories with blanksAvoid exceptions when parsing hyperlinks of type "javascript://"Fixed compatibility bug with modifying xls files created by POI-3.6 and earlierSupport fetching properties of Numbered Lists from PPT filesPartial HSMF support for fixed sized propertiesadded method processSymbol() to allow converting word symbols avoid style mess when using HSSFOptimiser preserve leading / trailing spaces in SXSSF Fixed XmlValueOutOfRangeException calling getDataValidations for custom validations with XSSFSheet Avoid NPE when constructing HSSFWorkbook on Google App EngineFixed null returned by XSSFPicture.getPictureData()fixed setForceFormulaRecalculation to reset workbook-level "manual" flagavoid unnecessary re-converting content types to US-ASCII, it can cause exceptions on ibm mainframesSet shapes anchors in XSSF when reading from existing drawingsHSSFOptimiser will now also tidy away un-used cell styles, in addition to duplicate stylesFixed memory and temporary file leak in SXSSF Fixed memory and temporary file leak in SXSSF ArrayIndexOutOfBounds Exception parsing word 97 document. Subtotal is not return correct value. XLS formula evaluation logging Unexpected adding of drawings into a workbook [GSoC] Improved work with shapes. HSSF feature: enhancements in EscherAggregate EscherAggregate does not handle Continue records First comment not cloned after cloneSheet() Broken auto fit row height in the cells with word wrap [GSoC2012] Improve drawing support in HSSF Unmodified cell comments disappear after HSSFWorkbook.write Corrupted File after cloneSheet() Inserting images on cloned sheet with images. The [EscherClientAnchorRecord] for object (eg: TextBox,Shape) may get lost. [HSSF] Improve support for Shapes and Shape Groups Using drawingPatriarch.createCellComment(anchor) leads to File error: data may have been lost Background images cause problems in HSSF spreadsheet It would be really nice to be able to set the background picture of a comment Adding Image to Header in Excel Using HSSF when we insert a new image to the existing excel file that corrupts the previous images File Error: data may have been lost If we have a comment but the row is not created we will not be able to get it. Comments not saving in XLS files with collapsible columns Not able to read Excel (xls) file having drawing objects Excel crashes after using removeCellComment methods cloning cloned sheet with autofilters corrupts the workbook Lost picture in file output after saving with POI File Error Data May Have been Lost error while opening commented workbook(excel file) setLineStyleColor for comments do not work Patch to correct BorderStyle enum positions Ugly Duckling case studyXLS formula bugfix (CalFieldFunc) + WeekDay addon Fixed some problems extracting PNGs Fixed some parsing errors and encoding issues in HDGF Improved performance of PageSettingsBlock in HSSF Getter for repeating rows and columnsFixed tests failing on JDK 1.7Fixed SXSSF to correctly write text before escaped Unicode control characterChange HSMF Types to have full data on ID, Name and Length, rather than just being a simple IDUpdated case studySupport Complex Name in formulas properly update sheet dimensions when adding column Add File based constructor to OPCPackage, alongside existing String one (which constructed a File from the string internally)Handle formatting General and @ formats even if a locale is prefixed to themRemoved unconditional asserts in SXSSFUpdated documentation and example on using Data Validations Corrected AddDimensionedImage.java to support XSSF/SXSSF Utility for representing drawings contained in a binary Excel file as a XML treeHWPF support for fetching the description (alt text) of a picturesupport negative arguments to the DATE() functionallow specifying of a TimeZone to DateUtil.getJavaDate(), for when it is known that a file comes from a different (known) timezone to the current machinedon't duplicate hyperlink relationships when saving XSSF filefixed evaluation of SUM over cell range > 255avoid exception when cloning sheets with no drawing records and initialized drawing patriarchNPOIFS: NIO driven API to read OLE2 filesystems with low memory footprint.SXSSF: a low-memory footprint API built on top of XSSF that can be used when very large spreadsheets have to be produced, and heap space is limitedpoi-excelant: Ant tasks for running POI against a workbookSupported evaluation of new Excel formulas: IRR,NPV,MROUND,VAR,VARP,CLEAN,CHAR,ADDRESS,HOUR,MINUTE,SECOND,RATE,WORKDAY,NETWORKDAYS,SUMIFS,RANKXSLF usermodel API: POI's implementation of the PowerPoint 2007 OOXML (.xlsx) file format. XSLF provides a rich usermodel API and a PPTX2PNG utility to export slides to images.WordToFO, WordToHtml and WordToText converters: utilities to export MS Word .doc files into XSL-FO, html and text files. Output from WordToFO can be used to convert .doc files to pdf using Apache FOP.Numerous improvements and refactorings in HWPF, Java API for MS Word .doc files: support for reading
footnotes, endnotes and bookmarks, improved support for handling tables, paragraphs, text runs and much more...Initial support for charts in XSSFsupport for OOXML Agile EncryptionDateFormatConverter: an utility to convert instances of java.text.DateFormat to Excel format patternsshow SSTIndex instead of XFIndex in LabelSSTRecord.toString()Tolerate missing Count and UniqueCount attributes when parsing shared strings table in XSSF eventusermodelAdded implementation for RANK()allow setting text with trailing carriage return in HSLFuse correct text attributes when presentation has multiple TxMasterStyleAtoms of the same typesupport setting background color of sheet tab in XSSFsupport for enforcing fields update in XWPFsupport grouping rows in SXSSFsupport replacement of content types in OPC packages replace ISO control characters with question marks in SXSSF to be consistent with XSSF updated formula test framework to be aware of recently added Functions support setting header / footer page margins in HSSF fixed WorkbookUtil#createSafeSheetName to escape colon fixed reading shared formulas in XSSF misc improvements in CellFormat added a getter for length of encrypted data in Ecma and Agile decryptorssupport adding TIFF,EPS and WPG pictures in OOXML documents avoid OutOfMemoryError when rendering grouped pictures in HSLF fixed XSSFRichtextString.append to preserve leading / trailing spaces tolerate hyperlinks that have neither location nor relation avoid duplicate text when rendering slides in HSLFrespect slide background when rendering slides in HSLFfixed painting shape outlines in HSLFfixed setting vertical alignment for XSLFTableCellfixed merging slides with pictures with associated custom tags allow runtime registration of functions in FormulaEvaluatorWhen reading from a ZipFileZipEntrySource that has already been closed, give IllegalArgumentException rather than NPEMAPIMessage may not always have name chunks when checking for 7 bit encodingsfixed namespace issue in WordToFoConverteravoid truncated array and vector data when reading OLE propertiesCharacterRun NPE fix when fetching symbol fonts, where no fonts are definedsupport merging table cells in XSLFvalidate row number and column index in SXSSF when creating new rows / cellsfixed evaluation of blank cells in COUNTIFsupport changing external file references in HSSFWorkbooksupport external references in FormulaRendereravoid exception when matching shared formula records in HSSFAdded methods to set/get an XWPFRun's text colorAdded methods to set/get vertical alignment and color in XWPFTableCellAdded methods to get/set a table row's Can't Split and Repeat Header attributes in XWPFAdded methods to set table inside borders and cell margins in XWPFSupport DConRefRecord in HSSFadded an option to ignore missing workbook references in formula evaluatorValidate address of hyperlinks in XSSFRelax the M4.1 constraint on reading OOXML files, as some Office produced ones do have 2 Core Properties, despite the specification explicitly forbidding thisAdded implementation for SUMIFS()POIXMLPropertiesTextExtractor support for extracting custom OOXML properties as textSupport writing XWPF documents with glossaries (Glossaries are not yet supported, but can now be written out again without changes)Handle files which have been truncated by a few bytes in NPropertyTableUpdate CellDateFormatter to handle times without secondsSupport ?/? as well as #/# fractions, and tighten DataFormatter rules for fraction matchingUpdated XWPF table example code Support for WORKDAY and NETWORKDAYS functionsMerge the logic between the TEXT function and DataFormatterCorrectly support excel style date format strings in the TEXT functionXSSFExcelExtractor should format numeric cells based on the format strings applied to themEvent based XSSF parsing should handle formatting of formula values in XSSFSheetXMLHandlerAvoid exception when creating cell style in a workbook that has an empty xf tablefixed XSSFSimpleShape to set rich text attributes from XSSFRichtextStringenhanced SheetUtil.getColumnWidthDeprecated XSSFWorkbook(String path) constructor because it does not close underlying .zip filefixed refcount of Fill pictures in HSLF support compression of temp files in SXSSF support cloning sheets with drawings in XSSF Support XWPF smart tags text in ParagraphsMore XSSF new-line in formula supportPOIFS EntryUtils.copyNodes(POFS,POIFS) now uses FilteringDirectoryNode, so can exclude from copying nodes not just directly under the rootPOIFS Helper FilteringDirectoryNode, which wraps a DirectoryEntry and allows certain parts to be ignoredfixed inserting multiple pictures in XSLF fixed HSLF TextExtractor to extract content from master slide null check on XWPF setFontFamilyensure that temporary files in SXSSF are deletedException parsing MS Word 8.0 file (as duplicate of 47958)ArrayIndexOutOfBoundsException from PicturesTable.getAllPictures() during Escher tree walkPAPFormattedDiskPage.getPAPX - IndexOutOfBoundsHWPF - ArrayIndexOutOfBoundsException with no stack trace (broken after revision 1178063)support for converting pptx files into images with a PPTX2PNG toolSupport for the Excel RATE functionHSLF fix for finishing parsing the picture stream on the first non-valid typeAvoid HWPF issue when identifying the picture typeFix signed issue with very large word 6 filesAvoid NPE on double close of ZipFileZipEntrySourceXWPF fix for footnotes not always being present in a documentCorrect AreaReference handling of references containing a sheet name which includes a commaXSSFReader supplied StylesTables need to have the theme data availableRemoved incorrect assert in SXSSFSheet#getSXSSFSheetOpening and Writing .doc file results in corrupt documentPicture.fillRawImageContent - ArrayIndexOutOfBoundsException (duplicate)ArrayIndexOutOfBounds ExceptionPicture.fillRawImageContentAllow the passing of a File object to WorkbookFactory.create, which permits lower memory processing than the InputStream versionupdate HSMF to ignore Outlook 2002 Olk10SideProp entries, which don't behave like normal chunkssupport creating comments in XSSF on an earlier slide when later ones already have themoptionally include Master Slide text in XSLF text extraction, as HSLF already offersNew PackagePart method getRelatedPart(PackageRelationship) to simplify navigation of relations between OPC Partshandle XLS files where the WRITEPROTECT record precedes the FILEPASS one, rather than following as normalcorrect GTE handling in COUNTIFAdd HWPF API to update range text and delete bookmarksHWPF Bookmarks tables are correctly updated on text updatesavoid LeftoverDataException when reading .xls files with invalid LabelRecordsprevent NPE in XWPFPicture.getPictureData() prevent NPE when getting object data from OLEShape in HSLFmore progress with Chart APi in XSSFAllow XSSF setForceFormulaRecalculation to work with the minimal ooxml-schemas jarIllegalArgumentException Parsing MS Word 97 - 2003XSLFPowerPointExtractor support for including comment authors with comment textConverted XSLFPowerPointExtractor to use UserModel for all text extractionXSLF initial UserModel support for Notes and Comments for Slidessupport for uncompressed OLE embeddingsExtracting text from Bug51524.zip is slowHWPFDocument.write based on NPOIFSFileSystem throws a NullPointerExceptionsupport for tables and hyperlinks in XSLFcorrect signed vs unsigned short reading in NDocumentInputStreamsupport SXSSF streaming from templatesinitial support for XSLF usermodel APIfixed OPCPackage to correctly handle self referencesImproved performance of XSSFSheet#writeWord Extractor considers text copied from some website as an embedded objectAdd Word-to-Text converter and use it as replacement for WordExtractorreplace text fails for doc ( poi 3.8 beta release from download site )Fixed incorrect encoding of non-breaking space (0xA0) in SXSSFSupport for conditional formatting in XSSFSupport isRightToLeft and setRightToLeft on the common spreadsheet Sheet interface, as per existing HSSF supportFixed evaluation of Subtotals to ignore nested subtotalsHWPFDocument.write destroys fieldsfixed EscherProperty to return property name instead of 'unknown' for complex properties Initial support for endnotes and footnotes in HWPFavoid exception when cloning XSSF sheets with background imagesFixed autofilters in HSSF to avoid warnings in Excel 2007Avoid exception when changing name of a sheet containing shared formulasSupport for appending images to existing drawings in HSSFInitial support for bookmarks in HWPFFixed cloning worksheets with imagesPapBinTable constructor is slow (regression)allow HSSFObjectData to work with both POIFS and NPOIFSavoid NPE when copying nodes from one HSSF workbook to a new one, when opened from NPOIFSavoid NPE when DefaultRowHeight or DefaultColumnWidth records are missingCorrect Subtotal function javadoc entrySupport for hyperlinks in SXSSFWord 6/95 documents with sections cause ArrayIndexOutOfBoundsExceptionXSSF support for row styles, to match existing HSSF functionalityCorrect XSSF cell formatting in HTML exportXWPF support for adding new footnotesProblems with save output of HWPF (losing formatting)Exception when working with tableStringIndexOutOfBoundsException in CharacterRun.replaceText()Regression: Text from some table cells missingAdd getOverallRange() method to HWPFDocumentCorePAPX referenced outside of TextPiecesTable are ignored now and not loadedFix main part range (and section) detection for files with additional parts (like footers/headers)Fix wrong TextPiece parsing in very rare cases like Bug33519.docInner tables are correctly supportedAllow user to retrieve Table nesting level (based on file information)Functionality of internal tool HWPFLister is greatly improved, including output of document PAPX and paragraphsExpand Word structures definitions (TAP, PAP, TLP, etc) based on official documentationAdd Excel-to-HTML converter (2007 versions)Add Word-to-HTML converter (95-2007 versions)Skip wrong-type SPRMs when characters SPRM is expectedAdd toStrings() methods to internal HWPF structures: BorderCode, PAPX, Paragraph, PieceDescriptor, Section, SEPX, SprmOperation, TextPiece etcSXSSF handling for null stringsFixed HSSFWorkbook.setSheetOrder() to respect inter-sheet references Avoid exception when evaluating workbooks with more than 256 sheets Correct BitField wrapping when setting large valuesImprove HSSF performance when loading very long rows, by switching the CellValue array to an iteratorPrevent corrupted output when saving files created by LibreOffice 3.3 Support using RecalcIdRecord to trigger a full formula recalculation on load Example demonstrating how to update Excel workbook embedded in a WordprocessingML document Avoid IndexOutOfBoundException when removing freeze panes in XSSF Fixed XSSFRichTextString to respect leading and trailing line breaks Fixed default behaviour of XSSFCellStyle.getLocked() Fixed setting column and row breaks in XSSFIgnore exceptions in ParagraphSprmUncompressorFixed Workbook.createSheet(sheetName) to truncate names longer than 31 charactersFixed internal IDs of shapes generated by HSSFPatriarch when there are more than 1023 drawing objects Improved documentation for Sheet.setColumnWidth Added handling of additional properties to HWPF ParagraphSprmCompressorSupport for sprmPJc paragraph SPRM in HWPFNew Case Study for POI web site Avoid exceptions in HSSFDataFormat.getDataFormatString() Fixed autosizing columns beyond 255 character limit Fixed incorrect setting of lastPrinted OOXML core property Word to XSL-FO converterFixed missing shapeId in XSSF drawings Fixed arithmetic rounding in formula evaluation Support autoSizeColumn in SXSSFParse picture goal and crop sizes in HWPFAdd sprmTCellPaddingDefault support in HWPFEnhanced Handling of Picture Parts in XWPFAdditional HWPF Table Cell Descriptor valuesCorrectly calculate image width/height, if image fits into one cellCorrect extra paragraphs from XWPF Table CellsSupport for getting and setting XWPF zoom settingsSupport for adding Numbering and Styles to a XWPF document that doesn't already have themFormula Value Cache fix for repeated evaluationsImproved performance of SharedValueManager XSSF set colour support for black/white to match getterInitial support for Spreadsheet Chart APIAdd support for OOXML Agile EncryptionInitial version of SXSSF, a low memory footprint API to produce xlsx filesImproved performance of opening large .xls filesAdd XWPF support for GIF picturesNPOIFS Mini Streams now support extending the underlying big block stream to fit more dataXWPFDocument now properly tracks paragraphs and tables when adding/removing themCorrect sizing of LbsDataSubRecord with unused padding fieldsNameCommentRecord correction for writing non ASCII stringsCorrect XWPFTable tracking of new rowsCorrect XWPFParagraph tracking of inserted runsCorrect XWPFParagraph tracking of new runsHandle DataFormatter escaping of "." in the same way as "-" and "/"Fix IOUtils issue for NPOIFS reading from an InputStream where every block is fullCorrect XSSF cell style cloning between workbooksAdd get/setForceFormulaRecalculation for XSSF, and promote the methods to the common usermodel SheetTweak the logic for sizing the HSSFCells array on a HSSFRow to reduce memory over allocation in many use casesSupport for adding a picture to a XSSFRunRename/Move xssf.model.Table to xssf.usermodel.XSSFTable as it now has usermodel-like featuresCorrect target URI for new XSSF TablesInitial support for XSSF Charts. Provides easy access to the underlying CTChart object via the Sheet Drawing, but no high level interface onto the chart contents as yetXSSF and HSSF freeze panes now behave the sameSupport for adding a table to a XSSFSheetImprove HSMF MAPIMessage access to the HTML and RTF versions of the message body (where available)Add new method to HSMF of MAPIMessage.has7BitEncodingStrings() to make it easier to decide when encoding guessing is neededOutlookTextExtractor now requests 7 bit encoding guessingImprove HSMF encoding guessing for 7 bit fields in MAPIMessageAllow HSMF access to the HTML body contents in MAPIMessageImplement the load method on MemoryPackagePartSupport for continued ExtSSTRecordsSupport for HOUR, MINUTE and SECOND date formulasAdded NPOIFS constructors to most POIDocument classes and their extractors, and more widely deprecated the Document(DirectoryNode, POIFSFileSystem) constructor in favour of the more general Document(DirectoryNode) oneFixed NPOIFS handling of new and empty Document NodesFixed NPOIFS access to Document Nodes not in the top level directoryImproved SpreadSheet DataFormatter to handle scientific notation, invalid dates and format spacersCorrect createFreezePane in XSSF, so that the left row/column matches the documentation + HSSFWhen setting repeating rows and columns for XSSF, don't break the print settings if they were already thereExternalNameRecord support for DDE Link entries without an operationMore XSSFColor theme improvements, this time for Cell BordersChartEndObjectRecord is supposed to have 6 bytes at the end, but handle it notHMEF - New component which supports TNEF (Transport Neutral Encoding Format), aka winmail.datsupport for getting HWPFDocument fieldsfixed setting named styles to HSSFCellsfixed RecordFormatException when reading unicode strings with photenic dataMore helpful error message when you try to create a CellReference with #REF!XSSFColors return by XSSFFont now have theme information applied to themImprove how XSSFColor inherits from ThemesXSSFFont now accepts the full range of Charsets from FontChartsetSpeed up calls to HSSFColor.getIndexHash() by returning a cached, unmodifiable Map. HSSFColor.getModifiableIndexHash() provides access to the old (slow but modifiable) functionalityChange related formulas and named ranges when XSSFWorkbook.setSheetName is calledAnt tasks for running POI against a workbookCorrect XBAT chaining explanation in /poifs/fileformat.htmlSupport for getting the tables associated with a XSSFSheetMore XSSFColor updates for ARGB vs RGBUse stax:stax-api instead of org.apache.geronimo.specs:geronimo-stax-api_1.0_specFix XSSFColor to fetch the RGB values of old-style indexed coloursFix XSSFColor fetching of white and black background themesAvoid NPE from xmlbeans when moving XSSF Comments from one cell to anotherWhen creating HSSF Print Areas, ensure the named range is reference based not value basedWhen formatting numbers based on their Cell Style, treat GENERAL the same as the more typical Generalfixed HSSFWorkbook.createCellStyle to throw exception if the maximum number of cell styles was exceededBetter fix for html-style br tags (invalid XML) inside XSSF documentsallow overridden built-in formats in HSSFCellStyleAdded implementation for CLEAN(), CHAR() and ADDRESS()Improved documentation on user-defined functionsInside ExtractorFactory, support finding embedded OOXML documents and providing extractors for themPartial HDGF LZW compression supportSupport for continued NameRecordsCorrect shifting of the first or last row in a sheet by multiple rowsSupport evaluating formulas with newlines in them, which XSSF may have (but HSSF may not)Added inline string support to XSSF EventModelProperly position GutsRecord when reading HSSF workbooksAdded implementation for MROUND(), VAR() and VARP()Code cleanup and optimizations to keep some IDE quietSupport passing ranges to NPV()Added implementation for IRR()Improved performance of RowRecordsAggregate.getStartRowNumberForBlock / getEndRowNumberForBlockAvoid crashing Excel when sorting XSSFSheet autofilterAllow access from XSSFReader to sheet comments and headers/footersRefactor XSSFEventBasedExcelExtractor to make it easier for you to have control over outputting the cell contentsavoid corruption of XSSFWorkbook after applying XSSFRichTextRun#applyFontAllow white spaces and unicode in OPC relationship targets Remove cell from Calculation Chain after setting cell type to blank Ensure that XSSFRow#removeCell clears calculation chain entries Fixed evaluation of cell references with column index greater than 255 Tolerate Double.NaN when reading .xls filesUse cached formula result when auto-sizing formula cellsOLE2 does allow a directory with an empty name, so support this in POIFSavoid NPE when XSSFReader comes across chart sheetsOOXMLsupport for reading aes-encrypted/write-protected ooxml filessupport Java 1.5 in auto-generated xmlbeans for ooxml schemasSpreadsheet (Excel)initial support for autofilterssupport for data validation for ooxml formatinitial support for themes for ooxml formatadded implementation for new functions: RANDBETWEEN, POISSON, SUBTOTAL, TEXT, TRUNCsupport evaluation of indirect defined names in INDIRECTnumerous fixes and performance optimizations in the Formula Evaluation moduleability to add, modify and remove series from HSSF Chartsnumerous improvements in the cell data formatter (handling more formatting rules,
better color detection, allow overriding of default locale)more examples including a rich "spreadsheet to HTML" converterDocument (Word)initial support for the HWPF revision marks authors listsupport for border codes in HWPFsupport for processing of symbols in HWPFsupport sections in Word 6 and Word 95 filesimproved reading of auto-saved ("complex") documents in HWPFimproved support for manipulation of tables and paragraphs in XWPFSlideShow (PowerPoint)allow editing workbooks embedded into HSLF slide showsText Extractionsupport for text extraction from XSLF tablesadd PublisherTextExtractor support to extractorfactorysupport attachments as embedded documents within the new OutlookTextExtactornew event based XSSF text extractor (XSSFEventBasedExcelExtractor)make it easier to tell which content types each POIXMLTextExtractor handlesparagraph level as well as whole-file text extraction for word 6/95 files...and much much more: code cleanup, many bug fixes and performance improvementsavoid NPE in ListLevel.getNumberText() when numberText is null marked commons-logging and log4j as optional dependencies in POI pomsallow overridden built-in formats in XSSFCellStylesupport for BorderCode in HWPFsupport for processing of symbols in HWPFsupport for retrieving pictures from HSSF workbooksAvoid IllegalStateException when creating Data validation in sheet with macroImproved rounding in MODGenerate SHA1 hashes of distribution files, alongside existing MD5 onesIf a HSSF header or footer lacks left/right/centre information, assume it is a centre oneCorrectly remove calcChain entries for XSSF cells that stop holding formulasXSSFCellStyle support for creating a style in one workbook based on a style from a different oneAvoid concurrency problems when re-ordering multiple HSSF header records for a PageSettingsBlockFix XWPFDocument.addPicture so that it correctly sets up relationshipsImprove HWPF handling of lists in documents read and then saved, by preserving order betterFix HWPF paragraph levels, so that outline levels can be properly fetchedAvoid infinite loops on broken HWPF documents with a corrupt CHP style with a parent of itselfHandle HWPF documents with problematic HeaderStories betterSupport sections in Word 6 and Word 95 files (HWPFOldDocument)Correctly handle space preservation of XSSFRichTextRuns when applying fonts to parts of the stringCorrect XWPFRun detection of bold/italic in a paragraph with multiple runs of different stylesLink XWPFPicture to XWPFRun, so that embedded pictures can be access from where they live in the text streamImprove handling of Hyperlinks inside XWPFParagraph objects through XWPFHyperlinkRunMake XWPFParagraph make more use of XWPFRun, and less on internal StringBuffersAdd a getBodyElements() method to XWPF IBody, to make access to embedded paragraphs and tables easierMore XSLFRelation entries for common .pptx file partsavoid exception in XSSFFormulaEvaluator.evaluateInCell when evaluating shared formulasavoid corruption of XSSFWorkbook after removing all merged cells from sheetfixed inconsistent behaviour between HSSF and XSSF when creating consecutive namesAdd getMimeType() method to HWPF Picture, alongside existing file extensionAdd code for reading Ole10Native dataAdd getMimeType() method to HSSF/XSSF PictureData, alongside existing file extensionallow sheet names longer than 31 chars in XSSF, enforce name uniqueness on the first 31 charsimproved API for hiding sheetsfixed XSSFWorkbook.createSheet to throw exception if sheet name begins or ends with a single quote (')fixed XSSFFormulaEvaluator to support blank cellsadded a getter for _iStartAt in ListFormatOverrideLevelchange cell type to error when setting Double.NaN or Infinitiesensure that CTNumPr is included in poi-ooxml-schemas.jarfixed LEFT and RIGHT to return #VALUE! when called with a negative operand fixed evaluation of XSSF workbooks containing formulas with reference errors (#REF!)fixed fetching names of user defined styles in HSSFCellStyle.getUserStyleName()support for protecting a XSSF workbookfixed FormulaParser to correctly process defined names with underscoreadded implementation for RANDBETWEEN()avoid exception in OperandResolver.parseDouble when input is minus ("-")fixed OperandResolver to correctly handle inputs with leading decimal placeinitial support for Excel autofilterSupport for .msg attachments within a MAPIMessage .msgImprove handling and warnings when closing OPCPackage objectsCorrect XSSFWorkbook.getNumCellStyles to check the right styles listAdd WorkbookUtil, which provides a way of generating valid sheet namesUse DataFormatter when autosizing columns, to better match the real display width of formatted cellsAllow overriding and guessing of HSMF non-unicode string encodingsAllow the setting of user style names on newly created HSSF cell stylesMake it easier to tell which content types each POIXMLTextExtractor handlesAdded clone support for UserSView* and Feat* families of recordsSupport for escaped unicode characters in Shared String Tableprevent ArrayIndexOutOfBoundException in UnknownEscherRecordpreserve leading and trailing white spaces in XWPFRunInsert the content of fldSimple fields into the XWPFWordTextExtractor outputFixed parsing formulas containing defined names beginning with an underscoreAdded implementation for POISSON()Support for setting cell text to be vertically rotated, via style.setRotation(0xff)Case insensitive matching of OOXML part namesAbility to add, modify and remove series from HSSF ChartsSupport for HSSFNames where the comment is stored in a NameCommentRecordcorrect writing of noterecord author text when switching between ascii and unicodeimprove reading of auto-saved ("complex") documentsparagraph level as well as whole-file text extraction for word 6/95 files through hwpftext extraction support for older word 6 and word 95 files via hwpfallow the addition of paragraphs to xwpf table cellsdon't consider 17.16.23 field codes as properly part of the paragraph's textxslfslideshow shouldn't break on .thmx (theme) files. support for them is still very limited thoughlazy caching of xssfcomment ctcomment objects by reference, to make repeated comment searching fasterbetter handling of outlook messages in hsmf when there's no recipient email addresswhen formatting numbers with dataformatter, handle brackets following coloursfurther xwpf support for tables, paragraphs, including enhanced support for adding new onestweak hwpf table cell detection to work across more filesinitial support for external name references in hssf formula evaluationfix up tab ids when adding new sheets, so that print areas don't end up invalidimprove replacetext on hwpf rangescorrect documentation on what happens when you request a string from a non-string formula cellavoid npe when extracting ooxml file properties which are datesonly call decimalformat.setroundingmode on java 1.6 - it's needed to match excel's rendering of numberscorrect 1.6ismparse the hsmf headers chunk if present, and use it to find dates in text extraction if neededdetect and support time formats like hh:mm;hh:mmhave excelextractor make use of hssfdataformatter, so that numbers and dates come out closer to how excel would render themhave eventbasedexcelextractor make use of hssfdataformatter, so that numbers and dates come out closer to how excel would render themadd clone support to chart begin and end records, to allow cloning of more chart containing sheetslist attachment names in the output of outlooktextextractor (to get attachment contents, use extractorfactory as normal)allow dateformatter.formatrawcellcontents to handle 1904 as well as 1900 dateshandle mmmmm and elapsed time formatting rules in dataformatterhandle zero formatting rules, and better color detection in dataformattersupport for more kinds of formatting in dataformatterfixed construction of the dib picture headerinitial support for reading aes-encrypted/write-protected ooxml filesmake the creation of multiple, un-modified fonts in a row in xssf match the old hssf behaviourallow access to the hssfpatriarch from hssfsheet once createdallow you to get straight from a cellstyle to a color, irrespective of if the color is indexed or inline-definedallow access of the hwpf dateandtime underlying date valuesinitial support for the hwpf revision marks authors listensure that ctdigsigblob is included in poi-ooxml jardetect w:tab and w:cr entries in xwpf paragraphs, even when the xsd is silly and maps them to ctemptycorrect handling for font character sets with indicies greater than 127track the valuerangerecords of charts in hssfchart, to allow the basic axis operationstrack the linkdatarecords of charts in hssfchartimproved performance of xssfworkbook.write avoid npe when finding cell commentsensure that ctphoneticpr is included in poi-ooxml jarfixed tests failing in non-english localessupport for xssf themessupport for data validation for ooxml formatworksheet/cell formatting, with view and html converterworkaround excel outputting invalid xml in button definitions by not closing br tagsimprove performance of abstractescherholderrecord when there are lots of continue recordscorrect text size limit for ooxml .xlsx filesfix cellutils.setfont to use the correct type internallyproperly support 4k big block size in poifsavoid writing malformed cdata blocks in sharedstrings.xmladded implementation for text() added implementation for trunc() properly close internal inputstream in extractorfactory#createextractor(file)fixed locale-sensitive formatters in packagepropertiespartensure that ctvectorvariant is included in poi-ooxml-schemas.jaradded accessors to coreproperties.keywords propagate parent to parent-aware records decoded from escheradd extra paper size constans to printsetup, such as a3, b4 and b5make poifs.filesystem.directorynode preserve the original ordering of its files, which hsmf needs to be able to correctly match up chunkssupport evaluation of indirect defined names in indirectimprove hdgf chunkv11 separator detection, and short string detection, to solve the "negative length of chunkheader" problemoptionally allow the overriding of the locale used by dataformatter to control how the default number and date formats should looknew event based xssf text extractor (xssfeventbasedexcelextractor)extractorfactory can now be told to prefer event based extractors (current excel only) on a per-thread or overall basisavoid failures in xlsx2csv when shared string table is missingproperly close all io streams created in opcpackagealways copy all declared inner classes and interfaces when generating poi-ooxml-schemaslow level record support for the extrst (phonetic text) part of unicode strings. no usermodel access to it as yet thoughrecord.unicodestring has moved to record.common.unicodestring, to live with the other record-part classes, as it isn't a full recordavoid creating temporary files when opening opc packages from input streamimproved how hsmf handles multiple recipientsadd publishertextextractor support to extractorfactoryadd xslf support for text extraction from tablessupport attachments as embedded documents within the new outlooktextextractoradd a text extractor (outlooktextextractor) to hsmf for simpler extraction of text from .msg filessome improvements to hsmf parsing of .msg filesinitialise the link type of hssfhyperlink, so that gettype() on it worksimproved performance of dateutil.iscelldateformatted() fixed interfaceendrecord to tolerate unexpected record contents improved javadoc on hsspicture.resize() added ant target to install artifacts in local repository fixed pagesettingsblock to allow multiple headerfooterrecord records fixed cellrangeutil.mergecellranges to work for adjacent cell regions fixed externalnamerecord to properly distinguish dde data from ole data items allow editing workbooks embedded into powerpoint filesadded implementation of subtotal functionswitch to compiling the ooxml schemas for java 1.5fixed xssfsheet autosizecolumn() to tolerate empty richtextstringfixed columninforecord to tolerate missing reserved fieldfixed recordformatexception when reading list subrecords (lbsdatasubrecord) memory usage optimization in xssf - avoid creating parentless xml beansavoid corruption of workbook when adding cell comments improved work with cell comments in xssfadd support for creating summaryinformation and documentsummaryinformation properties
on poidocuments that don't have them, via poidocument.createinformationproperties()
be more forgiving of short chart records, which skip some unused fieldsfix erronious wrapping of byte colours in hssfpalette.findsimilarcolorfix fetching of error codes from xssf formula cellsfixed javadoc for hssfsheet.setcolumnwidth and xssfsheet setcolumnwidth fixed xlsx2csv to avoid exception when processing cells with multiple "t" elementsshort-circuit evaluation of if() and choose()support for text extraction from ppt master slidesadded a method to set arabic mode in hssfsheetrelease system resources when using picture.resize()avoid npe in xssfchartsheet when calling methods of the superclasshandle reading hwpf stylesheets from non zero offsetswhen running the "compile-ooxml-xsds" ant task, also generate the source jar for the ooxml schemasimprove handling by missingrecordawarehssflistener of records that cover multiple cells (mulblankrecord and mulrkrecord)relaxed validation check in recalcidrecordimproved error checking in blockallocationtablereader to trap unreasonable field valuesfixed logic for matching cells and comments in hssfcell.getcellcomment()added implementation of protection features to xlsx and docx filespreserve leading and trailing white spaces in xssfrichtextstringadded implementation for countblank functionadded intersectioneval to allow evaluation of the intersection formula operatoravoid un-needed call to the jvm garbage collector when working on ooxml opc packagesadded example hsmf application that converts a .msg file to text and extracts attachmentsadded ant target to compile scratchpad examplesimproved api for ooxml custom propertiesfixed xssfsheet.setcolumnwidth to handle columns included in a column spanfixed xssfsheet.setcolumnhidden to handle columns included in a column spanfixed xssfcell.getstringcellvalue() to properly handle cached formula resultsfixed logic for locating shared formula recordsimproved work with user-defined functionsfixed xssfsheet.setcolumnwidth to produce xml compatible with mac excel 2008removed unnecessary svn:executable flag from files in svn trunkadded javadoc how to avoid excel crash when creating too many hssfrichtextstring cellsfixed problems with xssfworkbook.removesheetat when workbook contains chartadjust sheet indices of named ranges when deleting sheetsbuilt-in positive formats don't need starting '('added method setfunction(boolean) for defined namesimplementation of excel "days360" and "npv" functionsdo not allow hssf's cell text longer than 32,767 charactersadded an example demonstrating how to convert an xlsx workbook to csvfixed ppt parser to tolerate comment2000 containers with missing comment textfix for extraction paragraphs and sections from headers/footers with xwpfwordextractorsupport for extraction of header / footer images in hwpfmoved all test data to a top-level directoryAdded implementation for INDIRECT()Avoid exception when reading ClipboardData packet in OLE property setsAdded support for reading encrypted workbooksImplementation of an XML to XLSX Importer using Custom XML MappingAvoid FormulaParseException in XSSFWorkbook.setRepeatingRowsAndColumns when removing repeated rows and columnsFixed XSSFCell to correctly parse column indexes greater than 702 (ZZ)Improved formula evaluator number comparisonFixed XWPFWordExtractor to extract inserted/deleted textFixed RecordFactoryInputStream to properly read continued DrawingRecordsFixed compatibility issue with OpenOffice 3.0
Fixed compatibility issue with Excel 2008 Mac sp2. Please see
the HSSF+XSSF project page
for more information.
Fix for saving custom and extended OOXML propertiesFixed WordExtractor to tolerate files with empty footnote blockFixed ExtractorFactory to support .xltx and .dotx filesSupport for extraction of footnotes from docx filesSupport for extraction of endnotes from docx filesInitial support for custom XML mappings in XSSFFixed NPE when retrieving core properties from a newly created workbookFixed HyperlinkRecord to properly handle URL monikersFixed XSSFWorkbook to read files with hyperlinks to document locationsFix BoolErrRecord to tolerate incorrect format written by OOOAllow HSSFEventFactory to handle non-zero padding at the end of the workbook streamSupport for getting OLE object data in PowerPointExtractorExplicitly set the 1900 date system when creating XSSF workbooksSupport for text extraction of footnotes, endnotes and comments in HWPFFixed PageSettingsBlock to allow multiple PLS recordsFixed concurrency issue with EscherProperties.initProps()Fixed OOM in HSSFWorkbook#getAllPictures when reading .xls files containing metafilesAdded implementation for ISNA()fixed SimpleShape#getLineWidth to handle default line width removed unused private fields in HWPF BorderCodeImproved HWPF TableCell to expose TableCellDescriptorImproved HWPF to better handle unicodeFixed SlideShow#removeSlide to remove references to NotesFixed HSSFHyperlink to correctly set inter-sheet and file linksFixed ExternalNameRecord to handle unicode namesFixed locale-sensitive unit tests to pass when running on non-US localeFixed HSSFSheet to allow addition of data validations after sheet protectionFixed XSSFWorkbook#setRepeatingRowsAndColumns to tolerate sheet names with quotesFixed logic in HSSFCell.getCellComment to handle sheets with more than 65536 commentsAdded clone() method to MulBlankRecord to fix crash in Sheet.cloneSheet()Fixed HSSFSheet to handle missing header / footer recordsFixed formula parser to properly reject cell references with a '0' row componentFixed PageSettingsBlock/Sheet to tolerate margin records after other non-PSB recordsFixed HSSFSheet#getFirstRowNum and HSSFSheet#getLastRowNum to return correct values after removal of all rowsFixed XSSFCell to avoid generating xsi:nil entries in shared string tableFixed XSSFCell to properly read inline stringsFixed FontRecord to expect unicode flags even when name length is zeroFixed formula evaluator comparison of -0.0 and 0.0Fixed ExternalNameRecord to handle DDE linksControl of header and footer extraction in ExcelExtractor / XSSFExcelExtractorNew ant target "jar-examples"Support in XSSF for setGroupColumnCollapsed and setGroupRowCollapsedAllow columns greater than 255 and rows greater than 0x100000 in XSSF formulasBase class for "old version" exceptions, and new HSLF detection + use of old versions exceptionFix string encoding issues with HSMF chunks on non-windows platformsAttachment support for HSMFHandle the cell format @ as the same as GeneralFixed evaluation of defined names with the 'complex' flag setMore tweaks to PageSettingsBlock parsing logic in Sheet constructorFixed XSSFWorkbook.createSheet to properly increment sheetIdFixed XSLFPowerPointExtractor to properly process line breaksFixed POIFSFileSystem to set CLSID of root when constructing instances from InputStreamFixed cloneStyleFrom to avoid exception when cloning styles of the same familyFixed Sheet to read GutsRecord in the Sheet(RecordStream rs)Automatically call sheet.setAlternativeExpression when sheet.setRowSumsBelow is called Allow 255 arguments for excel functions in XSSF Fixed XSSFCell to preserve cell style when cell value is set to blankAvoid NPE in XSSFCell.setCellType() when workbook does not have SSTAllow RecordFactory to handle non-zero padding at the end of the workbook streamFix reading the name of a NameRecord when the name is very longFixed WriteAccessRecord and LinkTable to handle unusual format written by Google DocsFixed defined names to behave better when refersToFormula is unsetAllow merged regions with columns greater than 255 or rows bigger than 65536 in XSSFFixed formula parser to better handle range operators and whole row/column refsFixed evaluation of range operator to allow for area-ref operandsFixed ExtendedPivotTableViewFieldsRecord(SXVDEX) to allow shorter formatFixed formula evaluator to not cache intermediate circular-reference error resultsFixed PageItemRecord(SXPI) to allow multiple field infosFix POIFS issue with duplicate block 0 references on very old BIFF5/BIFF7 filesPageSettingsBlock should include HEADERFOOTER recordupdate cell type when setting cached formula result in XSSFCelladded modifiers for anchor type to XSSFClientAnchorsupport built-in data formats in XSSFDataFormatfixed XSSFSheet.shiftRows to correctly preserve row heightspreserve custom column widths across re-serialization of XSSFWorkbookadded setDisplayZeros / isDisplayZeros to common interface org.apache.poi.ss.usermodel.Sheetadded getMergedRegion(int) to common interface org.apache.poi.ss.usermodel.Sheetfixed Sheet.autoSizeColumn() to use cached formula values when processing formula cells Fixed formula parser to handle names with backslashesadded Workbook getHidden() and setHidden(boolean)Fixed bugs serialization bugs in records: CHARTFORMAT, SHTPROPS, SXVD and SXVDEXFixed offset of added images if Pictures stream contains pictures with zero lengthWhen shifting rows, update formulas on that sheet to point to the new location of those rowsFixed XSSFSheet.shiftRows to properly update references of the shifted cellsRemove reference from calculation chain when a formula is deletedHSSFRow/RowRecord to properly update cell boundary indexesFixed formula parser to encode range operator with tMemFuncFixed COUNTIF NE operator and other special cases involving type conversionAdded a method to remove slidesFixed HSSFFont.applyFont() to properly apply font to overlapping regionsFixed ObjRecord to ignore excessive padding written by previous POI versionsFixed evaluator to perform case insensitive string comparisonscommand line interface for hssf ExcelExtractorAllow addition of conditional formatting after data validationPage Settings Block fixes - continued PLS records and PSB in sheet sub-streamsadded implementation for SUMIF functionSupport for reading HSSF column stylesHook up POIXMLTextExtractor.getMetadataTextExtractor() to the already written POIXMLPropertiesTextExtractorAvoid NPE in HPSFPropertiesExtractor when no properties existfixed bugs related to cached formula values and HSSFFormulaEvaluator.evaluateInCell()added implementation for CHOOSE() functionresolve licensing issues around the HDGF resource file, chunks_parse_cmds.tbladded implementation for TIME() functionadded HSSFPictureData.getFormat()fixed HSSFSheet.shiftRow to move hyperlinksfixed formula parser to correctly resolve sheet-level namessupport for shared formulas in XSSFsupport for carriage return and line break in XWPFRunsupport for line spacing in XWPFParagraphinitial support for creation of XWPFTableAdded getters to parent objects: HSSFSheet.getWorkbook(), HSSFRow.getSheet() and HSSFCell.getRow()(also patch 46362) fix serialization of StyleRecord with unicode nameFix HSSFRichTextRun and strings longer than 32768 charactersSupport sheet-level namesFixed XSSFCell to properly handle cell references with column numbers up to XFDFixed warning message "WARN. Unread n bytes of record 0xNN"Improved number to text conversion to be closer to that of ExcelFixed ValueRecordsAggregate to handle removal of new empty rowImproved error message when attempting to read BIFF2 fileFixed Sheet to tolerate missing DIMENSION recordsadded pivot table records: SXDI, SXVDEX, SXPI, SXIDSTM, SXVIEW, SXVD, SXVS, et alFixed RowRecordsAggregate etc to properly skip PivotTable recordsFixed FormulaRecordAggregate to gracefully ignore extra StringRecordsFixed HSSFName to handle general formulas (not just area references)added chart records: CHARTFRTINFO, STARTBLOCK, ENDBLOCK, STARTOBJECT, ENDOBJECT, and CATLABMore tweaks to EmbeddedObjectRefSubRecordChanges to formula evaluation allowing for reduced memory usageSupport odd files where the POIFS header block comes after the data blocks, and is on the data blocks listMore odd escaped date formatsInclude the sheet number in the output of XLS2CSVmracorrectly write out HPSF properties with HWPFadded CreationHelper.createFormulaEvaluator(), implemeted both for HSSF and XSSFfixed Slideshow.readPictures() to skip pictures with invalid headersHandle odd files with a ContinueRecord after EOFRecordFixed problem with linking shared formulas when ranges overlapMore fixes to SeriesTextRecordfixed TableCell to correctly set text typefixed Picture.draw to skip rendering if picture data was not foundmemory usage optimisation - converted Ptg arrays into Formula objectsadded implementation for VALUE functionadded implementation for FIND functionfixed ObjRecord to read ftLbsData properlyfixed evaluation cache dependency analysis when changing blank cellsFix up ColumnHelper to output valid col tags, by making 1 based and 0 based bits clearer, and using the right onesHandle very long cells in the XSSF EventUserModel exampleInitial ExtractorFactory support for building TextExtractors for embedded documentsSupport stripping XSSF header and footer fields (eg page number) out of header and footer text if requiredAdd POIXMLPropertiesTextExtractor, which provides to the OOXML file formats a similar function to HPSF's HPSFPropertiesExtractorImprove XWPFWordExtractor to extract headers and footersImprove how XWPF handles paragraph textSupport in XWPF handles headers and footersImprove XWPF text extraction to include tables always, and picture text where possibleImprove XSLF usermodel support, and include XSLF comments in extracted textFix XSSF header and footer support, and include headers and footers in the output of XSSFExcelExtractorSupport for .xlsm files, sufficient for simple files to be loaded by excel without warningNew class org.apache.poi.hssf.record.RecordFormatException, which DDF uses instead of the HSSF version, and the HSSF version inherits fromPartial support for .xlm files. Not quite enough for excel to load them thoughCorrect named range sheet reporting when no local sheet id is given in the xmlSupport for fetching embedded documents from within an OOXML filePort support for setting a policy on missing / blank cells when fetching, to XSSF tooCommon text extraction factory, which returns the correct POITextExtractor for the supplied dataText Extraction support for the new OOXML files (.xlsx, .docx and .pptx)Initial support for processing OOXML Excel files (.xlsx), both directly through XSSF, and also through the new common UserModelCreated a common interface for handling PowerPoint files, irrespective of if they are .ppt or .pptxCreated a common interface for handling Excel files, irrespective of if they are .xls or .xlsxallowed for change of unicode compression across Continue recordssupport for link formulas in Text Objectssupport for evaluating formulas with missing argsfixed ArrayIndexOutOfBoundsException in EmbeddedObjectRefSubRecordfixed ArrayIndexOutOfBoundsException when constructing HSLF Table with a single row Initial support for creating hyperlinks in HSLFfixed BoundSheetRecord to allow sheet names longer than 31 charsfixed HSSFSheet.shiftRows to also update conditional formatsmodified Formula Parser/Evaluator to handle cross-worksheet formulasOptimised the FormulaEvaluator to take cell dependencies into accountInitial support for whole-row cell stylingUpdate hssf.extractor.ExcelExtractor to optionally output blank cells tooInclude the sheet name in the output of examples.XLS2CSVmraSupport long chart titles in SeriesTextRecordsThrow an exception if HSSF Footer or Header is attempted to be set too long, rather than having it break during writing outAdditional diagnostics for HSLF SlideShowRecordDumperHSSFPicture.getImageDimension() failed when DPI of image is zeroBit mask values in StyleTextPropAtom were not preserved across read-writeSpecify RecordType for slide show Handout (4041)Fixed 16-bit signed/unsigned bug in HSSFSheet.getColWidth etcFixed HSSFSheet.shiftRows to also update Area refsUpdate HSMF to handle Outlook 3.0 msg files, which have a different string chunk typeExpose the name of Named Cell Styles via HSSFCellStyle (normally held on the parent style though)Fixed IOOBE in Ref3DPtg.toFormulaString() due eager initialisation of SheetReferencesMade HSSFFormulaEvaluator no longer require initialisation with sheet or rowExtended support for cached results of formula cellsFixed AIOOBE due to bad index logic in ColumnInfoRecordsAggregateFixed special cases of INDEX function (single column/single row, errors)Support for Very Hidden excel sheets in HSSFInitial HWPF support for Office Art ShapesFixed HSSFWorkbook.cloneSheet to correctly clone sheets with drawingsFix for SlideShow.reorderSlide in HSLFInitial support for embedded movies and controls in HSLFsigned/unsigned error when parsing 3-d area refs, performance problem evaluating area refs, and ClassCastExcecption in IF()Support for HPBF Publisher hyperlinks, including during text extractionpreserve position of ArrayRecords and TableRecords among cell value recordsImpove empty header or footer handling in HWPF HeaderStoriesAvoid NPE in hssf.usermodel.HeaderFooter when stripping fields outAvoid NPE in EscherBSERecord on older escher recordsBasic text extraction support in HPBFInitial, low level support for Publisher files, in the form of HPBFFix RowRecordsAggregate to tolerate intervening MERGEDCELLS recordsFix LinkTable to tolerate multiple EXTERNSHEET recordsFix for cloning of CFRecordsAggregateInitial support for evaluating external add-in functions like YEARFRACFix for MissingRecordAwareHSSFListener to prevent multiple LastCellOfRowDummyRecords when shared formulas are presentFix for HSSFSheet.autoSizeColumn() for widths exceeding Short.MAX_VALUESupport for additional HSSF header and footer fields, including bold and full file pathSupport stripping HSSF header and footer fields (eg page number) out of header and footer text if requiredSupport stripping HWPF fields (eg macros) out of text, via Range.stripFields(text)New HPSF based TextExtractor for document metadata, org.apache.poi.hpsf.extractor.HPSFPropertiesExtractorProperly update the array of Slide's text runs in HSLF when new text shapes are addedFix for Header/footer extraction for .ppt files saved in Office 2007Big improvement in how HWPF handles unicode text, and more sanity checking of text ranges within HWPFInclude headers and footers int he extracted text from HWPF's WordExtractorAdded support to HWPF for headers and footersImprove how HWPF deals with unicode internally. Should avoid some odd behaviour when manipulating unicode textAdded implementations for Excel functions NOW and TODAYFix for workbook streams with extra bytes trailing the EOFRecordInclude headers and footers (of slides and notes) in the extracted text from HSLFFixed incorrect default row height in OpenOffice 2.3HSSFPicture.resize() stretched image when there was a text next to itOptionally extract comment text with PowerPointExtractor, and initial hslf model support for commentsInclude excel headers and footers in the output of ExcelExtractorrefactor duplicate logic from EventRecordFactory to RecordFactorySupport for Headers / Footers in HSLFExtensive fixes for data validationFixed to keep datavalidation records togetherSupport for creating new HSLF CurrentUserAtomsPartial support for removing excel comments (won't work for all excel versions yet)Detect encrypted word documents, and throw an EncryptedDocumentException instead of a OOMNew class, hssf.usermodel.HSSFDataFormatter, for formatting numbers and dates in the same way that Excel doesDon't add too many UncalcedRecords to sheets with charts in themSupport detecting date formats containing "am/pm" as date timesRemoved dependency from contrib on commons beanutils,collections and langNew helper, HSSFOptimiser, which handles removing duplicated font and style records, to avoid going over the limits in ExcelFixed NPE in HSSFSheet.autoSizeColumn() when cell number format was not foundMissing return keyword in ArrayPtg.toFormulaString()Record level support for Data Tables. (No formula parser support though)Include a version class, org.apache.poi.Version, to allow easy introspection of the POI versionAllow the cloning of one HSSFCellStyle onto another, including cloning styles from one HSSFWorkbook onto anotherfinished support for special comparison operators in COUNTIFAvoid generating multiple NamedRanges with the same name, which Excel dislikesFix cell.getRichStringCellValue() for formula cells with string resultsHandle more excel number formatting rules in FormatTrackingHSSFListener / XLS2CSVmraImprove the performance of HSSFSheet.shiftRowsFixed bug when last row removed from sheet is row zeroTweaks to RVA formula logicFixed recognition of named ranges within formulasFix HSSFWorkbook to give you the same HSSFFont every time, and then fix it to find newly added fontsFix HSSFColor.getTripletHash()Fixed formula parser to handle dots in identifiersImprovement for HWPF Range.replaceText()Further fix for HWPF Range.delete() and unicode charactersSupport for variable length operands in org.apache.poi.hwpf.sprm.SprmOperationAvoid spurious missing lines with the MissingRecordAware event code, and odd files that contain RowRecords in the middle of the cell RecordsSupport for parsing formulas during EventUserModel processing, via the new EventWorkbookBuilderFixed re-serialization of tRefErr3d and tAreaErr3dRemoved incorrect shared formula conversion in CFRuleRecordImproved HWPF Range.replaceText()Fixed HSSFPicture.resize() to properly resize pictures if the underlying columns/rows have modified sizeSupport custom image renderers in HSLFCorrectly increment the reference count of a blip when a picture is insertedFixed TextShape.resizeToFitText() to properly resize TextShapeFixed serialization of RefN~ tokens. Simplified Ptg class hierarchyFixed OBJ Record (5Dh) to pad the sub-record data to a 4-byte boundaryFixed Sheet to always enforce RowRecordsAggregate before ValueRecordsAggregateFixed SharedFormulaRecord.convertSharedFormulas() to propagate token operand classesCorrectly detect date formats like [Black]YYYY as being date basedImproved token class transformation during formula parsingImproved handling of HSSFObjectData, especially for entries with data held not in POIFSSupport for getting excel cell comments when extracting textExtend the support for specifying a policy to HSSF on missing / blank cells when fetching, to be able to specify the policy at the HSSFWorkbook levelimproved FormulaParser parse error messagesallowed EXTERNALBOOK(0x01AE) to be optional in the LinkTablefixed sheet encoding size mismatch problemsSupport embedded HDGF visio documentsPartial fix for HWPF Range.insertBefore() and Range.delete() with unicode charactersSupport for AM/PM in excel date formatsSupport for specifying a policy to HSSF on missing / blank cells when fetchingPartial support for extracting Escher images from HWPF filesAvoid an infinite loop when reading some HWPF picturesCorrectly handle short last blocks in POIFSfixed reading/writing of AttrPtg(type=choose) and method toFormulaString() for CHOOSE formulasadded HSSFName.isDeleted() to check if the name points to cell that no longer existsfixed selected/active sheet after removing sheet from workbookfixed workbook sheet selection and focusFixed NPE in ListLevel when numberText is nullProperly update TextSpecInfoAtom when the parent text is changedfixed HSSFSheet to properly read xls files without ROW recordsfixed HSSFFormulaEvaluator.evaluateInCell() and Area3DEval.getValue() also added validation for number of elements in AreaEvalsfixed LabelRecord to use empty string instead of null when the length is zerofixed ArrayPtg to use ConstantValueParser. Fixed a few other ArrayPtg encoding issuesFollow-on from 28754 - StringPtg.toFormulaString() should escape double quotesImproved error handling in HSSFWorkbook when attempting to read a BIFF5 fileParameter operand classes (function metadata) required to encode SUM() etc properly. Added parse validation for number of parametersallow Ptg.writeBytes() to be called on relative ref Ptgs (RefN* and AreaN*)Fix/suppress warning message "WARN. Unread n bytes of record 0xNN"made HSSFWorkbook.getSheet(String) case insensitiveCorrectly process PICT metafile in EscherMetafileBlipTake into account indentation in HSSFSheet.autoSizeColumnAvoid OOM on unknown escher records when EscherMetafileBlip is incorrectSupport for getting embedded sounds from slide show Initial support for rendering slides into imagesSupport for getting OLE object data from slide show Implemented more methods in PPGraphics2DAdded Freeform shape which can contain both lines and Bezier curvesImproved text extraction in HSLFConditional Formatting - improved API, added HSSFSheetConditionalFormattingUpdate 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 easierFix the logger used by POIFSFileSystem, so that commons-logging isn't required when not usedUpdate HSLFSlideShow and HSSFWorkbook to take advantage of POIFS updates, and allow reading embedded documentsImprove how POIFS works with directory entries, and update HWPFDocument to support reading an embedded word documentInitial support for getting and changing chart and series titlesImplement 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 itfixed encode/decode problems in ExternalNameRecord and CRNRecordFix how HDGF deals with trailing data in the list of chunk headersMore work on Conditional Formattingrefactored all junits' usage of HSSF.testdata.path to one placeSmall fixes for conditional formatting (regions with max row/col index)HPSF: Support for property sets without sectionsImplement Sheet.removeShape(Shape shape) in HSLFVarious fixes: Recognising var-arg built-in functions #, ExternalNameRecord serialisation bug #, PMT() bug #More work on Conditional FormattingMove the Formula Evaluator code out of scratchpadMove the missing record aware eventusermodel code out of scratchpadImproved handling of Pictures in Word DocumentsFix formula parsing of RefVPtg, which was causing #VALUE to be shown on subsequent editsImprove the thread safety of POILogFactoryInitial support for Conditional FormattingHandle leading spaces in formulas, such as '= 4'Support for PercentPtg in the formula evaluatorSupport calculated string values for evaluated formulasAdd accessors to horizontal and vertical alignment in HSSFTextboxImproved handling of short DVRecordsFix Range.delete() in HWPFSupport for area references in formulas of rows >= 32768Improved support for detecting read-only recommended filesCorrectly update the internal last cell number when adding and removing cells (previously sometimes off-by-one)Added initial support for recognising external functions like YEARFRAC and ISEVEN (using NameXPtg), via LinkTable supportImprovements 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 handlingFixed number conversion inconsistencies in many functions, and improved RefEvalAdded initial support for recognising external functions like YEARFRAC and ISEVEN (using NameXPtg), via LinkTable supportImprovements 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 handlingFixed number conversion inconsistencies in many functions, and improved RefEvalFix formula evaluation with evaluateInCell on boolean formulasFix how DVALRecord works with dropdownsHandle named cell ranges in formulas that have lower case partsDon't have the new-style "HPSF properties are always available" affect the old-style use of HPSF alongside HSSFCrystal Reports generates files with short StyleRecords, which isn't allowed in the spec. Work around thisHandle named cell ranges in formulas that have lower case partsDon't have the new-style "HPSF properties are always available" affect the old-style use of HPSF alongside HSSFCrystal Reports generates files with short StyleRecords, which isn't allowed in the spec. Work around thisSupport for Lookup, HLookup and VLookup functionsAvoid getting confused when two sheets have shared formulas for the same areas, and when the shared formula is set incorrectlyInputStreams 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 suppliedSupport for the Offset functionHave HSSFPalette.findSimilar() work properlyFix the contrib SViewer / SViewerPanel to not fail on sheets with missing rowsFurther support for unusual, but valid, arguments to the Mid functionSupport for whole-column ranges, such as C:C, in formula strings and the formula evaluatorUpdate Match function to properly support Area referencesImproved handling of references for the need to quote the sheet name for some formulas, but not when fetching a sheet by nameFix for circular references in INDEX, OFFSET, VLOOKUP formulas, where a cell is actually allowed to reference itselfFix for Mid function handling its arguments wrongSupport for Match, NA and SumProduct functions, as well as initial function error supportCope 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
ignoredHandle 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)Have HSSFDateUtil.isADateFormat recognize more formats as being datesSupport for Excel hyperlinksImplement hashCode() and equals(obj) on HSSFFont and HSSFCellStyleImplement CountA, CountIf, Index, Rows and Columns functionsProperly escape sheet names as required when figuring out the text of formulasImprovements to how SystemOutLogger and CommonsLogger log messages with exceptions, and avoid an infinite loop with certain log messages with exceptionsSupport for a completed Record based "pull" stream, via org.apache.poi.hssf.eventusermodel.HSSFRecordStream, to complement the existing "push" Event User Model listener stuffIntPtg must operate with unsigned short. Reading signed short results in incorrect formula calculationFix for reading slide background imagesAvoid swapping AreaPtgs from relative to absoluteCorrectly process the last paragraph in a word fileAvoid some unread byte warnings, and properly understand DVALRecordAdd another formula evaluation method, evaluateFormulaCell(cell), which will re-calculate the value for a formula, without affecting the formula itselfFix how we handle signed cell offsets in relative areas and referencesSupport for getting and setting a flag on the sheet, which tells excel to re-calculate all formulas on it at next reloadEnable cloning of sheets with data validation rulesEnable cloning of sheets with notesAdd a moveCell method to HSSFRow, and deprecate setCellNum(), which didn't update things properlySupport setting row grouping on files from CR IX, which lack GutsRecordsSupport cloning of sheets with certain drawing objects on themDon't consider merged regions when auto-sizing columnsAvoid "Expected ExpPtg to be converted from Shared to Non-Shared Formula" on large, formula heavy worksheetsAdd support for named ranges with unicode namesWhen shifting rows, update formulas on that sheet to point to the new location of those rowsSupport getting all the cells referenced by an AreaReference, not just the corner onesAdd support for named ranges in formulas, including non-contiguous named rangesAdd support for hiding and un-hiding sheets, and checking their current hidden statusFix for non-contiguous named rangesFix for shifting comments when shifting rowsSupport for tables in HSLFFix for extracting text from TextBoxes HSLF inImprove JavaDocs relating to hssf font and fill colouringsSupport for Mid, Replace and Substitute excel functionsSupport for getting the from field from HSMF messagesSupport for 1904 date windowing in HSSF (previously only supported 1900 date windowing)Support for String continue recordsSupport for data validation, via DVRecord and DVALRecordFix for handling mixed OBJ and CONTINUE recordsFix for handling mixed OBJ and CONTINUE recordsSupport for unicode NameRecordsThrow an IllegalArgumentException if asked to create a merged region with invalid columns or rows, rather than writing out a corrupt fileSupport for unicode NameRecordsSupport for Chart Title Format recordsFix for BOF records from things like AccessFix for IntPtg and short vs intFix for handling rotated text in HSSFSheet.autoSizeColumnInclude an Excel text extractor, and put all existing text extractors under a common superclassImprovements to the LZW compression engine used by HDGFHSSFPicture.resize() - a handy method to reset a picture to its original width and heightAdd a getSheetIndex(HSSFSheet) method to HSSFWorkbook, and allow a HSSFSheet to get at its parent HSSFWorkbookMove POIDocument out of Scratchpad, and update HSSFWorkbook to use itFix for Cell References for rows > 32678Improved Formula Parser support for numbers and rangesWhen writing HSLF files out, optionally preserve all OLE2 nodes (default is just the HSLF related nodes)Support for adding Pictures to ShapeGroups in HSLFSupport for getting OLE object data from HSSFWorkbookSupport for getting OLE object data from slideshowsSupport for reading EMF, WMF and PICT images via HSSFWorkbook.getAllPictures()Fix for reading files with long cell comments and text boxesFix for the EventUserModel and records that aren't immediately followed by their ContinueRecordsFix for saving Crystal Reports xls files when preserving nodesFix for Escher layer handling of embedded OLE2 documentsWhere permissions deny fetching System Properties, use sensible defaultsFix formula evaluator support for Area3D references to other sheetsImprovements to HSSFDateUtils.isADateFormat, and have HSSFDateUtil.isCellDateFormatted use thisFix for HSSFPatriarch positioning problemsSupport for write-protecting a HSSF workbookSupport for querying, setting and un-setting protection on sheets in a HSSF workbookInitial HSMF (outlook) supportTidy up the javadocsAdministrative updates to the Maven POMs, and the release artifact build processFix for HSSF setSheetOrder and tab namesBetter HSLF support for problem shape groupsBetter HSLF support for corrupt picture recordsInitial support for a "missing record aware" HSSF event modelAdditional HSLF support for Title and Slide Master SheetsImproved HSLF note to slide matching, and a NPETweak some HSLF exceptions, to make it clearer what you're catchingFix for HSLF writing of files with tablesImproved way of detecting HSSF cells that contain dates, isADateFormatInitial, read-only support for Visio documents, as HDGFFix POM for Maven usersAdd createPicture to HSSFShapeGroupDetect Office 2007 XML documents, and throw a meaningful exceptionAdditional HSLF support for PowerPointInitial support for HWPF image extractionAdditional HSLF support for PowerPointHSSF Formula supportAdditional HSLF support for PowerPointExtended Ascii support for WingDingsBugzilla Bug 29976 HSSF hyperlink formula size problemImage writing supportHSLF - Initial PowerPoint Support. Includes: Support for text extraction across the whole file; Support for getting individual slides, and their notes, and extracting text from those; Initial support for changing (but not adding) text