当前位置: 首页 > 知识库问答 >
问题:

在使用apache poi读取excel单元格时,如何将字符串与公式区分开来?

董谦
2023-03-14

我读过http://poi.apache.org/spreadsheet/eval.html但我无法让它发挥作用。。。

我的工作表中有一列包含这些值:

D+1           (pseudo-formula, to be evaluated in java)
01.01.0001    (string constant)
=A1           (formula where A1 contains pseudo formula 'D+2')
=A2           (formula where A2 contains '13.08.2013')

(对于像“d1”这样的字符串,我编写了一个解析器,用今天的日期替换D,并将其递增1。“01.01.0001”是一个神奇的值。“=A3”显然是一个excel公式)

我如何安全地得到所有这些值到一个普通的旧java字符串

  • 取消之前excel公式的引用

???

对于上面的例子,我想得到:

"D+1"
"01.01.0001"
"D+2"
"13.08.2013"

共有1个答案

蒯硕
2023-03-14

如果是手工操作:需要同时检查getCellType()和getCachedFormulaResultType()。该类型将让您计算出它是什么类型的单元格,用于格式化/单元格值获取等。对于公式,当您看到它是一个公式单元格时,可以获取最后计算的值及其类型

然而,基于你想要的,我认为可能有一种更简单的方法。我想你可能可以使用数据格式,特别是格式(细胞)

如果您使用数据格式,它将识别类型(包括公式),获取值,获取Excel应用的数字/日期格式规则,并应用这些规则。您会得到一个字符串,它是ApachePOI能够管理的最接近Excel中显示的内容,看起来像您想要的

 类似资料:
  • 我的C#. Net应用程序通过使用excel公式字符串加载和读取excel工作表单元格值。 例如,excel工作表位置和选项卡名称及其单元格行/列将作为公式字符串提供。 'D:\DataX[数据.Xls]EOD'$A5级 根据上述公式-C#应用程序加载数据。Xls,并打开EOD选项卡,应读取第5行A列值。 寻找在C#中完成的最佳方式。Net框架。

  • 问题内容: 我有这样的内容的Excel文件: A1:SomeString A2:2 所有字段均设置为字符串格式。 当我使用POI读取Java中的文件时,它表明A2为数字单元格格式。 问题在于A2中的值可以是2或2.0(并且我希望能够区分它们),所以我不能只使用.toString()。 如何将值读取为字符串? 问题答案: 当您提出问题时,我认为我们没有上过这堂课,但是今天有一个简单的答案。 您要做的

  • 我正在开发一个上传excel文件并将其值插入数据库的应用程序。 我的代码如下: 所以当我上传一个像下面这样的excel文件时,它会工作并将其数据插入db。 但是,当我上传像以下这样的excel文件时,db不会更新。 我可以问你如何解决这个问题,所以即使单元格的值是=ROUNDUP((600),2),而不是600,它仍然更新db。 提前谢谢你。

  • 我试图从excel文件中读取所有数据,其中也有一些公式单元格,但我不知道哪个单元格是公式单元格。如何读取单元格中的所有值,而不考虑单元格的类型。 我的代码看起来像这样 我得到的公式单元格值为0

  • 问题内容: 我正在使用Apache POI库读取Excel文件。我在读取密码单元时被卡住了。如果用户在密码单元格中输入日期作为密码,即16/05/2012。我正在将此值读取为“ 41045”,而该值应为“ 16/05/2012”。这是我的代码: 有人可以帮忙吗? 谢谢。 问题答案: 您在POI中寻找的类是DataFormatter 当Excel写入文件时,某些单元格将存储为文字字符串,而另一些单元

  • 问题内容: 我必须将 算法从Excel工作表移植到python代码, 但必须对 Excel文件中的算法 进行 反向工程 。 Excel工作表非常复杂,它包含许多单元格,在这些单元格中有引用其他单元格的公式(也可以包含公式或常数)。 我的想法是使用python脚本分析工作表,以构建一种单元格之间的依存关系表,即: A1取决于B4,C5,E7公式:“ = sqrt(B4)+ C5 * E7” A2取决