我正在使用ApachePOI填充Excel文件的单元格,并且文档中有很多公式单元格。但是,当我在Excel中打开文档时,它们的值不会刷新。据我了解,我需要使用FormulaEvaluator来刷新公式单元格。但是,有没有办法一次更新所有公式单元格?其中有很多,虽然列出详尽的list并非不可能,但我肯定不是很愿意这样做。 最佳答案 当然。无论如何,刷新工作簿中的所有公式可能是更典型的用例。如果您使用HSSF,请调用evaluatorAllFormulaCells:HSSFFormulaEvaluator.evaluateAllForm
调用简单toBytes()确实会产生字节,但exel会引发警告。LostDocumentinformation谷歌搜索给了我这个link看着Javadocs用于工作表和POIHOW-TO说类似的话。基本上我不能在不丢失一些信息的情况下获得Bytes,而应该使用write方法。虽然write工作正常,但我确实需要将字节发送过来。有什么办法可以做到吗?那就是在没有任何警告的情况下获取字节。 最佳答案 正如那个邮件列表帖子所说InvokingHSSFWorkbook.getBytes()doesnotreturnallofthedatan
我正在使用ApachePOI将值输入到电子表格中。这些值有换行符,我能够成功使用这段代码:CellStylestyle=cell.getCellStyle()style.setWrapText(true)cell.setCellStyle(style)不幸的是,虽然文本正确换行,但行的高度并不总是增长到足以显示内容。如何确保我的行总是正确的高度? 最佳答案 currentRow.setHeight((short)-1)适用于XSSFCell和Excel2013 关于java-Apache
我想将单元格的前景色设置为十六进制代码中的给定颜色。例如,当我尝试将其设置为红色时:style.setFillForegroundColor(newXSSFColor(Color.decode("#FF0000")).getIndexed());无论我在decode函数的参数中设置什么Hex值,getIndexed函数总是返回黑色。会不会是我做错了什么?我认为这是一个错误,但我不确定...... 最佳答案 好消息是,如果您使用的是XSSF,而不是HSSF,那么您的问题的解决方案相当容易。您只需要将样式变量转换为XSSFCellSty
我正在使用POI生成Excel文件。我需要为工作表中的特定单元格添加边框。我怎样才能做到这一点? 最佳答案 以单元格中使用的样式设置边框将完成此操作。示例:style.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);style.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);style.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);style.setBorderLeft(HSSFCellStyle.BORDER_M
我需要在格式为百分比的Excel单元格中显示一个值,例如像12.3%.默认值显示为文本,但我需要显示为数字。实现此目的的适当方法是什么? 最佳答案 你需要:将数据设置为数字(浮点),而不是文本。将单元格格式指定为百分比。类似:cell.setCellValue(0.123);//setvalueasnumberCellStylestyle=workbook.createCellStyle();style.setDataFormat(workbook.createDataFormat().getFormat("0.000%"));ce
各位,我目前正在使用POI3.9库来处理excel文件。我知道getLastRowNum()函数,它返回Excel文件中的行数。唯一的问题是getLastRowNum()返回一个计数从0开始的数字。所以如果Excel文件使用前3行,getLastRowNum()返回2。如果Excel文件只有1行,则getLastRowNum()返回0。当Excel文件完全为空时会出现此问题。getLastRowNum()仍然返回0,所以我无法确定Excel文件是否有1行数据,或者它是否为空。那么如何检测Excel文件是否为空? 最佳答案 试试She
我有一个大的.xlsx文件(141MB,包含293413行,每行62列)我需要在其中执行一些操作。我在加载此文件时遇到问题(OutOfMemoryError),因为POI在XSSF(xlsx)工作簿上占用了大量内存。ThisSOquestion类似,提出的解决方案是增加VM的分配/最大内存。它似乎适用于那种文件大小(9MB),但对我来说,即使分配了所有可用的系统内存,它也根本不起作用。(好吧,考虑到文件大15倍以上,这并不奇怪)我想知道是否有任何方法可以以一种不会消耗所有内存的方式加载工作簿,并且无需进行基于(进入)XSSF底层XML的处理。(换句话说,保持一个清教徒的POI解决方案)
我正在尝试编写一个适用于Excel文档的程序,但HSSF格式对于我的要求来说太小了。我正在尝试迁移到XSSF,但在尝试使用它时不断出现错误。我通过在我的程序中添加xmlbeans-2.3.0.jar和dom4j-1.6.jar设法解决了前两个问题,但是现在出现了这个错误,似乎没有通过添加Apachecommons来解决jar可在Apache网站上找到。错误如下:Exceptioninthread"main"java.lang.NoClassDefFoundError:org/apache/commons/collections4/ListValuedMapathot.memes.Exc
我正在使用ApachePOIAPI从Excel文件中获取值。除了包含公式的单元格外,一切都很好。事实上,cell.getStringCellValue()正在返回单元格中使用的公式,而不是单元格的值。我尝试使用evaluateFormulaCell()方法,但它不起作用,因为我使用的是GETPIVOTDATAExcel公式,并且此公式未在API中实现:Exceptioninthread"main"org.apache.poi.ss.formula.eval.NotImplementedException:ErrorevaluatingcellLandscape!K11atorg.apa