- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的项目中,我使用 SXSSFWorkbook
(Apache-POI 3.9) 类来管理大型电子表格。现在我需要评估某些单元格的公式,所以我尝试使用像这样的 FormulaEvaluator
...
SXSSFWorkbook streamingWorkbook = new SXSSFWorkbook(100);
...
FormulaEvaluator fe = streamingWorkbook.getCreationHelper().createFormulaEvaluator();
...
fe.evaluateInCell(cell);
但是这样做会引发异常
java.lang.ClassCastException: org.apache.poi.xssf.streaming.SXSSFCell cannot be cast to org.apache.poi.xssf.usermodel.XSSFCell
at org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator.evaluateInCell(XSSFFormulaEvaluator.java:177)
at org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator.evaluateInCell(XSSFFormulaEvaluator.java:44)
...
此错误的直接原因很明确:方法 .evaluateInCell
接受一个 Cell
对象,但在内部将 Cell
转换为 XSSFCell
。由于我传递的是 SXSSFCell
,因此会引发异常。
所以问题是:有没有办法在流工作簿(SXSSF)中实现公式求值?
最佳答案
TL;DR - 您所使用的旧版 3.9 版本中没有您需要的支持,因此您需要升级到 3.13 beta 2 或更高版本。
您的问题是您使用的 Apache POI 版本太旧。这就是当您尝试评估 SXSSF 单元时会遇到异常的原因。如detailed towards the end of the Formula Evaluation documentation ,对于SXSSF公式评估,您需要使用3.13 beta 2或更高版本。
但需要注意的一件事 - 公式计算不仅需要将包含公式的单元格存储在内存中,还需要它引用的任何其他单元格以及它们引用的任何单元格。因此,调用 FormulaEvaluator.evaluateAll()
不太可能起作用;通常,您需要在写入后逐一评估单元格。您还会遇到到处引用的公式,因为它们只有在它们引用的单元格位于当前窗口中并且尚未刷新到磁盘时才起作用。
关于java - Apache POI 评估 SXSSF 工作簿中的公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29390924/
根据SXSSF (Streaming Usermodel API) documentation : SXSSF (package: org.apache.poi.xssf.streaming) is
我有一个 .xlsx 文件,其中包含包含不同数据的多个工作表。在所有的Sheet中,一张需要容纳近10万行数据,而且数据需要用Java和poi编写。 这对于 SXSSFWorkbook 来说似乎非常快
我正在尝试在流式工作簿 (SXSSFWorkbook) 中创建 Excel 表。 API 不直接支持它,但我通过访问底层 XSSFWorkbook (workbook.getXSSFWorkbook)
我正在尝试使用 SXSSF 读取 xls 文件。我读过 SXSSF,但不明白如何使用它。所以我遇到了一些问题。 任何人都可以帮助我读取大型 xls 文件(大约 100,000 行和 7-8 页)的 j
问题 在 SXSSF 工作簿中: 如何设置字体? 如何将细胞类型设置为日期? 上下文 我需要编写一个包含大量行和列(400.000 行,每行 50 个字段)的 excel .xlsx 文件,所以我使用
我正在使用 SXSSF 编写 100 万条(最坏情况)记录。 以下是我编码的方式。 我必须将记录写入已经存在的 Excel 模板。这个 模板是 在类路径中可用。我将把这个模板复制到一个普通的 地点。使
在我的项目中,我使用 SXSSFWorkbook (Apache-POI 3.9) 类来管理大型电子表格。现在我需要评估某些单元格的公式,所以我尝试使用像这样的 FormulaEvaluator ..
我的表中有 500 行。当我使用 setRandomAccessWindowSize(1000) 时,它工作正常。数据已从结果集中成功导出到 Excel 文件中,但是当我使用 setRandomAcc
我正在使用 Apache POI 库将大量数据导入 Excel 文件。我不能使用 HSSF 模型,因为它需要太多内存并且 Java 会抛出内存堆异常。我发现的方法是 SXSSF 工作簿模型,它将每 N
我有一个问题。我是对的,如果我有一个通过 xssf 构造函数创建的工作簿,那么将构造函数更改为 sxssf 工作簿就足够了(使用 xssf wb 作为参数传递)以使其在 流模式 下工作?非常感谢您的回
我正在尝试编写一个巨大的 excel 文件,我的要求允许我写下行然后忘记,所以我正在使用 SXSSF这只允许在内存中保留少数行,其余的都写入文档。这有助于克服大文件的内存不足异常。 但我还需要使用 s
我需要读取大型 excel 文件并将其数据导入我的应用程序。 由于 POI 占用大量堆工作,经常抛出 OutOfMemory 错误,我发现有一个 Streaming API 用于串行处理 excel
我想将 SXSSF 转换器与 JXLS 一起使用。我试图以这样一种方式编写我的模板,即我不会得到“试图在已经写入磁盘的范围内写入一行”异常。该模板捕获已知列(例如“HEADER 0”)和未知列(以“_
使用 POI 时 XSSFWorkbook ,单元格(通过生成的 xlsx 文件内的 sharedStrings.xml)会自动保留空白,即 sharedStrings.xml 中的条目看起来像
我有一个包含宏 (.xlsm) 的 Excel 模板,我想读入它,向其中添加一百万行并将其写出。 我知道使用包含宏的 POI 读取和重写文件将保留宏。我需要使用 SXSSF(内存限制)写出 Excel
我能够使用 XSSF 读取现有的 xlsm,并使用 SXSSF 将数据写入工作表。最后使用 Outputstream 将其输出为另一个 xlsm。 SXSSF在文档中提到用于编写xlsx 读取和写入大
我正在使用 POI () 的流式工作表编写一个大型 Excel 工作表(超过一百万条记录),但出现 java.lang.OutOfMemoryError: Java heap space。这是我的代码
正在尝试使用 apache POI 3.17 在应用程序上实现 excel 导出功能。 在我的本地 tomcat 服务器和 Windows 开发环境中,一切都运行良好。但是,SXSSFWorkbook
我在使用 SXSSF poi api 生成有效的 xlsx 文件时遇到问题。如果我使用以下代码,则会生成正确的 Excel 文件:工作簿 wb = new XSSFWorkbook();但如果我使用失
我有一个包含 400,000 行的大型 .xlsx Excel 工作表。我想在这个现有的工作簿中阅读和写作。 当我尝试使用 Apache poi 在 java 中读取它时,代码如下: FileInpu
我是一名优秀的程序员,十分优秀!