使用Apache POI可以通过公式的getCellFormula()方法来获取单元格中的公式字符串。如果公式引用了另一个工作簿,可以通过公式字符串中的"'[工作簿名]工作表名'!单元格地址"的格式来识别。
以下是一个示例代码,演示如何使用Apache POI来识别引用另一个工作簿的公式:
import org.apache.poi.ss.usermodel.*;
import java.io.FileInputStream;
import java.io.IOException;
public class ReadExcelWithFormula {
public static void main(String[] args) {
try {
FileInputStream file = new FileInputStream("path/to/your/excel/file.xlsx");
Workbook workbook = WorkbookFactory.create(file);
Sheet sheet = workbook.getSheetAt(0);
for (Row row : sheet) {
for (Cell cell : row) {
if (cell.getCellType() == CellType.FORMULA) {
String formula = cell.getCellFormula();
if (formula.contains("[")) {
int start = formula.indexOf("[");
int end = formula.indexOf("]");
String externalWorkbookName = formula.substring(start + 1, end);
System.out.println("External workbook name: " + externalWorkbookName);
}
}
}
}
workbook.close();
file.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述代码首先打开一个Excel文件,然后获取第一个工作表。然后,遍历每个单元格。如果单元格中的类型是公式类型,就获取公式字符串。如果公式字符串中包含方括号,则提取其中的工作簿名。
请根据你的实际需求修改代码中的文件路径和工作表索引。