簡體   English   中英

如何使用 poi 從 Excel 表中檢索百分比類型值

[英]How to retrieve percentage type value from excel sheet using poi

我正在嘗試使用 Apache POI 讀取單元格值 Excel 表。 我的一張工作表包含百分比類型作為單元格類型。 當我使用 POI 使用 cell.getNumbericValue() 讀取該單元格時,它會返回雙精度值。 如果單元格包含 11.24%,則返回 0.1124。 我的問題是,我也想從單元格中讀取 % 符號,即,我想讀取單元格中的確切數據為 11.24%。 所以,我使用 cell.toString() 嘗試了它,即使它返回與上面相同的值。 任何人都可以請建議我,如何擺脫這個問題。 在此先感謝南都

您可以通過像這樣測試單元格數據格式字符串來檢測單元格是否設置為百分比格式:

if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
    if (cell.getCellStyle().getDataFormatString().contains("%")) {
        // Detect Percent Values 
        Double value = cell.getNumericCellValue() * 100;
        System.out.println("Percent value found = " + value.toString() +"%");
    } else {
        Double value = cell.getNumericCellValue();
        System.out.println("Non percent value found = " + value.toString());
    }
}

這應該使您能夠區分百分比格式的值和普通數值。

試試這個:

String typeCell =cell.getCellStyle().getDataFormatString(); 

它給:

  • 非格式化單元格的“常規”值,
  • 百分比格式的“0%”
  • dd/mm/yy 日期,取決於語言環境

我設法解析單元格中的所有類型(數字、百分比、日期、文本、貨幣)我只需要檢查它會給我返回哪種單元格類型的值。 因為我也有很多麻煩HSSFCell.CELL_TYPE_STRINGHSSFCell.CELL_TYPE_NUMERIC

11.24% 是 0.1124,這就是為什么這就是存儲在文件中的原因,這就是您要求數值時得到的

POI 提供了一個實用程序,用於根據應用於單元格的格式規則來格式化數字字符串,即DataFormatter 如果你使用它來格式化單元格,你會得到一個包含單元格內容的字符串,就像在 Excel 中看到的那樣。

@WeeShetland 的答案應該是公認的答案。

您可以使用代替cell.getCellStyle().getDataFormatString().contains("%")

// class level
private static final int PERCENTAGE_FORMAT = BuiltinFormats.getBuiltinFormat("0%");

...


// in some method
if (cell.getCellStyle().getDataFormat() == PERCENTAGE_FORMAT) {
    ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM