我们使用 sqlsheet 库从 excel 表中读取数据。该库工作正常,但由公式计算的字段存在问题。该单元格的值始终为空。
有没有办法告诉 sqlsheet 在执行数据查询之前评估单元格公式?
我们使用 sqlsheet 库从 excel 表中读取数据。该库工作正常,但由公式计算的字段存在问题。该单元格的值始终为空。
有没有办法告诉 sqlsheet 在执行数据查询之前评估单元格公式?
我反编译了驱动程序并在 net.pcal.sqlsheet 的 XLSResultSet 中添加了以下 hssf 单元格检查:
public static String getStrVal(Cell cell) {
long ival = 0;
Boolean bool = false;
String cData = "";
switch(cell.getCellType()){
case Cell.CELL_TYPE_BLANK:
cData = null;
break;
case Cell.CELL_TYPE_STRING:
cData = cell.getStringCellValue();
break;
case Cell.CELL_TYPE_FORMULA:
switch(cell.getCachedFormulaResultType()) {
case Cell.CELL_TYPE_NUMERIC:
cData = String.valueOf(cell.getNumericCellValue());
break;
case Cell.CELL_TYPE_STRING:
cData = String.valueOf(cell.getRichStringCellValue());
break;
}
break;
default:
cData = "unsupported cell type";
break;
}
return cData;
}
然后对已有的字符串检查修改一下,如下:
public String getString(String jdbcColumn) throws SQLException {
Cell cell = getCell(jdbcColumn);
if (cell == null) {
return cell == null ? null : formatter.formatCellValue(cell);
}else{
String myCell = getStrVal(cell);
return myCell;
}
}
这解决了公式和引用单元格的问题。