如何通过XSSF事件API评估excel公式 [英] How to evaluate a excel formula through XSSF event API

查看:129
本文介绍了如何通过XSSF事件API评估excel公式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Apache POI的事件API读取XLSX文件,即通过SAX解析器读取XLSX表的内容。我想知道如何使用XSSF事件API获取公式的计算值。



我知道这样做的方法是使用 FormulaEvaluator 类。但是由于FormulaEvaluator需要一个Workbook类的实例,所以我不想使用这种方法。 (我正在阅读包含百万行和100列的Excel文件,所以如果我创建该Excel的Workbook对象,我的应用服务器内存不足,因此我使用Event API)


解决方案

通常缓存的值将被写入与单元格,所以你可以读取(不需要评估)



以此公式单元格为例:

 < cr =B10> 
< f> SUM(B1:B9)< / f>
< v> 4995< / v>
< / c>

您读取 f 值以获取公式本身,或只是阅读 v 值,以便在excel上次触摸该文件时查看该公式的评估。不需要评价!


I am reading XLSX files using event API of Apache POI, i.e I read the contents of the XLSX sheet through a SAX Parser. I want to know how can we get the computed value of a formula by using XSSF event API.

The way I know to do this is by using the FormulaEvaluator class. But since formulaEvaluator takes an instance of Workbook class I don't want to use this approach. (I am reading Excel files containing a million rows and 100 columns so if I create a Workbook object of that Excel my app server goes out of memory and hence I am using Event API)

How can I do the evaluation in event parsing, without a Workbook instance?

解决方案

Generally the cached value will be written with the cell, so you can just read that (no need to evaluate)

Taking this formula cell as an example:

  <c r="B10">
    <f>SUM(B1:B9)</f>
    <v>4995</v>
  </c>

You read the f value to get the formula itself, or just read the v value to see what the evaluation of the formula was when excel last touched the file. No need to evaluate!

这篇关于如何通过XSSF事件API评估excel公式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆