У меня есть два файла xlsx, один с ожидаемым результатом, другой был сгенерирован приложением.Нет визуальных отличий между файлами.Из первого файла я могу получить все данные.Но когда я пытаюсь прочитать данные из второго файла (сгенерированного файла), все данные в формате валюты возвращаются с пустой строкой.
Но когда я копирую все данные во вновь созданный файл, я могу их прочитать.Что не так с созданным файлом и как его исправить?
public String get_CellData(int rownum, int colnum) throws Exception {
try {
cell = sheet.getRow(rownum).getCell(colnum);
String CellData = null;
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
System.out.println("The type of cell is STRING ");
CellData = cell.getStringCellValue();
break;
case Cell.CELL_TYPE_NUMERIC:
System.out.println("The type of cell is NUMERIC ");
if (DateUtil.isCellDateFormatted(cell)) {
//CellData = cell.getDateCellValue().toString();
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
CellData = sdf.format(cell.getDateCellValue());
} else {
String typeCell = cell.getCellStyle().getDataFormatString();
System.out.println("typeCell: " + typeCell);
if (typeCell.contains("%")) {
// DecimalFormat df5 = new DecimalFormat( "#,###,###,##0.00000");
DecimalFormat df5 = new DecimalFormat("#######.##0.00000");
Double value = cell.getNumericCellValue() * 100;
CellData = df5.format(value) + "%";
System.out.println("Percent value found = " + CellData.toString());
} else {
DataFormatter formatter = new DataFormatter();//("#,##0.00");
int formatIndex = cell.getCellStyle().getDataFormat();
String cellFormattedData = formatter.formatRawCellContents(cell.getNumericCellValue(), formatIndex, "#0.00");
//String cellFormattedData = formatter.formatRawCellContents(cell.getNumericCellValue(), formatIndex, "###.##");
CellData = cellFormattedData;
}
}
break;
case Cell.CELL_TYPE_BLANK:
System.out.println("The type of cell is BLANK ");
CellData = "";
break;
case Cell.CELL_TYPE_BOOLEAN:
System.out.println("The type of cell is BOOLEAN ");
CellData = Boolean.toString(cell.getBooleanCellValue());
break;
case Cell.CELL_TYPE_FORMULA:
System.out.println("The type of cell is FORMULA ");
System.out.println("Formula is " + cell.getCellFormula());
switch (cell.getCachedFormulaResultType()) {
case Cell.CELL_TYPE_NUMERIC:
System.out.println("Last evaluated as: " + cell.getNumericCellValue());
DataFormatter formatter = new DataFormatter();//("#,##0.00");
int formatIndex = cell.getCellStyle().getDataFormat();
String cellFormattedData = formatter.formatRawCellContents(cell.getNumericCellValue(), formatIndex, "#,##0.00");
CellData = cellFormattedData;
break;
case Cell.CELL_TYPE_STRING:
System.out.println("Last evaluated as \"" + cell.getRichStringCellValue() + "\"");
CellData = cell.getStringCellValue();
break;
}
}
return CellData;
} catch (Exception e) {
return "";
}
}