diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java index 2d91e8400..96f42f554 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java @@ -25,6 +25,7 @@ import junit.framework.TestCase; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; @@ -104,4 +105,33 @@ public final class TestUnfixedBugs extends TestCase { } } } + + + public void test57236() { + // Having very small numbers leads to different formatting, Excel uses the scientific notation, but POI leads to "0" + + /* + DecimalFormat format = new DecimalFormat("#.##########", new DecimalFormatSymbols(Locale.getDefault())); + double d = 3.0E-104; + assertEquals("3.0E-104", format.format(d)); + */ + + DataFormatter formatter = new DataFormatter(true); + + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("57236.xlsx"); + for(int sheetNum = 0;sheetNum < wb.getNumberOfSheets();sheetNum++) { + Sheet sheet = wb.getSheetAt(sheetNum); + for(int rowNum = sheet.getFirstRowNum();rowNum < sheet.getLastRowNum();rowNum++) { + Row row = sheet.getRow(rowNum); + for(int cellNum = row.getFirstCellNum();cellNum < row.getLastCellNum();cellNum++) { + Cell cell = row.getCell(cellNum); + String fmtCellValue = formatter.formatCellValue(cell); + + System.out.println("Cell: " + fmtCellValue); + assertNotNull(fmtCellValue); + assertFalse(fmtCellValue.equals("0")); + } + } + } + } } diff --git a/test-data/spreadsheet/57236.xlsx b/test-data/spreadsheet/57236.xlsx new file mode 100644 index 000000000..656884784 Binary files /dev/null and b/test-data/spreadsheet/57236.xlsx differ