Java 中如何读取 Excel 文件公式计算后的值
有一个excel文件,里面包含很多公式和公式计算后的值。我想通过java读取某个公式值,应该怎么实现?
我用poi尝试过了,但对于某些公式获取的结果不是很理想,请问还有其他方案吗?
Java 中如何读取 Excel 文件公式计算后的值
有一个excel文件,里面包含很多公式和公式计算后的值。我想通过java读取某个公式值,应该怎么实现?
我用poi尝试过了,但对于某些公式获取的结果不是很理想,请问还有其他方案吗?
首先,你需要知道的是,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) {
15 回答8.3k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答4k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
在GcExcel中,可以通过setFormula设置公式,之后使用getValue可以直接获取到公式计算的结果。