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

java - Java 中如何读取 Excel 文件公式计算后的值?

秦弘亮
2023-12-01

Java 中如何读取 Excel 文件公式计算后的值

有一个excel文件,里面包含很多公式和公式计算后的值。我想通过java读取某个公式值,应该怎么实现?
我用poi尝试过了,但对于某些公式获取的结果不是很理想,请问还有其他方案吗?

共有2个答案

夔波
2023-12-01

在GcExcel中,可以通过setFormula设置公式,之后使用getValue可以直接获取到公式计算的结果。

public void GetFormulaValue() {    Workbook wb = new Workbook();    IWorksheet sheet = wb.getWorksheets().get(0);    sheet.getRange("A1").setValue(1);    sheet.getRange("B1").setValue(2);    sheet.getRange("C1").setFormula("=SUM(A1,B1)");    // 输出: C1 的结果是:3.0    System.out.print("C1 的结果是:" + sheet.getRange("C1").getValue());}
郭永安
2023-12-01

首先,你需要知道的是,Apache POI 只能解析单元格的值,但不能解析公式的结果。如果你想读取 Excel 文件公式计算后的值,你需要使用其他工具。

我建议你使用 JExcelApi。这是一个开源的 Java 库,可以读取、写入和操作 Excel 文件。你可以用它来获取单元格的公式和结果。

以下是一个简单的例子:

import jxl.Workbook;import jxl.read.biff.Biff8;import jxl.write.Label;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;import java.io.File;import java.io.IOException;public class ReadExcel {    public static void main(String[] args) {        try {            Workbook workbook = Workbook.getWorkbook(new File("yourfile.xls"));            int numOfSheets = workbook.getNumberOfSheets();            for (int i = 0; i < numOfSheets; i++) {                System.out.println("sheetname:" + workbook.getSheetName(i));                WritableSheet sheet = null;                try {                    sheet = workbook.getSheet(i);                } catch (IOException e) {                    e.printStackTrace();                }                int rownum = sheet.getPhysicalNumberOfRows();                for (int row = 0; row < rownum; row++) {                    int cellnum = sheet.getRow(row).getPhysicalNumberOfElements();                    for (int cell = 0; cell < cellnum; cell++) {                        Object result = sheet.read(row, cell); // 这里读取的是单元格的值,包括公式和结果                        System.out.println("cell:" + result); // 输出单元格的值,包括公式和结果                    }                }            }        } catch (IOException e) {            e.printStackTrace();        } catch (Biff8.BadRowException e) {            e.printStackTrace();        } catch (jxl.biff.BadFileException e) {            e.printStackTrace();        } catch (WriteException e) {            e.printStackTrace();        } finally {            if (workbook != null) {                try {                    workbook.close(); // 关闭 workbook,释放资源                } catch (IOException e) {
 类似资料:
  • 问题内容: 我想用3列N行从Java读写Excel文件,在每个单元格中打印一个字符串。谁能给我简单的代码片段吗?我是否需要使用任何外部库,或者Java是否内置支持? 我要执行以下操作: 问题答案: Apache POI可以为你做到这一点。特别是HSSF模块。该快速指南是最有用的。这是你想做什么的方法-专门创建一张纸并将其写出来。

  • 我对Java编程是新手。我当前的项目要求我读取excel表中的嵌入式(ole)文件并获取其中的文本内容。阅读嵌入式word文件的例子很好,但是我无法找到阅读嵌入式pdf文件的帮助。通过看类似的例子尝试了很少的事情....但没成功。

  • 问题内容: 我已经搜索了stackoverflow,但是没有找到明确的答案。如何将数据从XLS文件的特定行和列读取到我的Android应用程序?如何读取XLS文件?我不想将其转换为CSV,因为在尝试将其转换时出现错误。 也许我可以使用此http://www.andykhan.com/jexcelapi/tutorial.html#reading,但我什至不知道如何将其导入到我的项目中。请帮忙。 问

  • 该编码能够读取excel文件中的小数据...但不读取excel文件中的大数据文件....如何进一步修改代码?

  • 如何用Java将一个Excel的文件的数据读取到另一个Excel中? 我有两个excel文件,希望将A文件中的数据合并在B文件中。有没有推荐的方案

  • Java 中如何按列读取 Excel 数据 我有一个excel文件,希望用java读取某个表单某列的值,以便做后续的操作。有推荐的方案吗?