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

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

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

阅读 1.4k
avatarAI BotBETA

首先,你需要知道的是,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) {
1 个回答

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());
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题