获取单元格值,以及它在excel中的显示方式

Bnr*_*rdo 10 java apache-poi

我目前正在开发一个使用Apache POI读取excel文件的项目.

我的任务似乎很简单,我只需要获取excel文件中显示的单元格值.我知道根据单元格的单元格类型执行switch语句.但是,如果数据是这样的

9,000.00

POI 9000.0在我做的时候给了我getNumericCellValue().当我强制单元格成为字符串类型并执行getStringCellValue()它然后给我9000.我需要的是数据如何在excel中呈现.

我发现一些帖子告诉使用DataFormat类,但根据我的理解,它需要你的代码知道单元格的格式.在我的情况下,我不知道单元格可能具有的格式.

那么,我如何检索单元格值如何在excel中呈现?

Gag*_*arr 21

Excel将一些单元格存储为字符串,但大多数作为具有特殊格式规则的数字应用于它们.你需要做的是对数字单元格运行那些格式化规则,以产生看起来像在Excel中的字符串.

幸运的是,Apache POI有一个类可以做到这一点 - DataFormatter

你需要做的就是:

 Workbook wb = WorkbookFactory.create(new File("myfile.xls"));
 DataFormatter df = new DataFormatter();

 Sheet s = wb.getSheetAt(0);
 Row r1 = s.getRow(0);
 Cell cA1 = r1.getCell(0);

 String asItLooksInExcel = df.formatCellValue(cA1);
Run Code Online (Sandbox Code Playgroud)

无论细胞类型是什么,DataFormatter都会使用Excel中应用的规则尽可能地为您格式化