【发布时间】:2015-10-27 12:16:39
【问题描述】:
我正在尝试使用 Apache Poi (v3.11 / XSSFWorkbook) 读取 excel 文件。我正在阅读一张特定的表格 {e.x. sheet(0)} 由来自同一文件的大约 15 张不同的宏组成。问题是我能够读取非格式化字符串数据,但无法读取货币或 % 等格式化数据。
反正我不控制 Excel 工作表。我将从网络共享路径读取文件。
XSSFWorkbook myWorkBook = null
XSSFSheet mySheet = null;
Row rowHeader = null;
Row rowData = null;
FileInputStream fis = new FileInputStream(
new File(
"inputfile.xlsx"));
myWorkBook = new XSSFWorkbook(fis);
mySheet = myWorkBook.getSheetAt(0);
rowHeader = mySheet.getRow(0);
rowData = mySheet.getRow(1);
for (Cell s : rowHeader) {
System.out.print("| "+s.getStringCellValue());
System.out.println(" -->"+getCellValue(myWorkBook,rowData.getCell(s.getColumnIndex())));
}
myWorkBook.close();
}
// $#,##0.00
private static String getCellValue(XSSFWorkbook wb, Cell cell)
{
XSSFCell x = (XSSFCell)cell;
return x.getRawValue();
}
}
我有一个如下所示的 Excel 表格
Name Amount Rate
Name1 $1,500 75%
如果我使用此代码阅读上述表格
名称 --> 名称1
金额 --> 1500(注意缺少的 $ 和 , )
比率 --> 74.99999998(数字不准确且缺少 % 符号)
【问题讨论】:
-
考虑使用
BigDecimal来存储您的货币值。 -
你需要$符号,%带值吗。
-
宏生成 $ & %。如果我用 Ms-excel 打开工作表,我可以看到这些值。是的,我确实需要 $ & %。目标是获取单元格中准确显示的单元格值。
-
不,我的意思。我们阅读了这些价值观。您只需要这些值或使用符号
-
如果你使用DataFormatter to render the cell to a String会发生什么?
标签: java excel apache-poi