|
|
@@ -18,7 +18,10 @@ |
|
|
|
package org.apache.poi.xssf.usermodel; |
|
|
|
|
|
|
|
import org.apache.poi.ss.usermodel.BaseTestDataFormat; |
|
|
|
import org.apache.poi.ss.usermodel.BuiltinFormats; |
|
|
|
import org.apache.poi.ss.usermodel.DataFormatter; |
|
|
|
import org.apache.poi.xssf.XSSFITestDataProvider; |
|
|
|
import org.apache.poi.xssf.XSSFTestDataSamples; |
|
|
|
|
|
|
|
/** |
|
|
|
* Tests for {@link XSSFDataFormat} |
|
|
@@ -28,4 +31,39 @@ public final class TestXSSFDataFormat extends BaseTestDataFormat { |
|
|
|
public TestXSSFDataFormat() { |
|
|
|
super(XSSFITestDataProvider.instance); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* [Bug 49928] formatCellValue returns incorrect value for \u00a3 formatted cells |
|
|
|
*/ |
|
|
|
public void test49928(){ |
|
|
|
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("49928.xlsx"); |
|
|
|
DataFormatter df = new DataFormatter(); |
|
|
|
|
|
|
|
XSSFSheet sheet = wb.getSheetAt(0); |
|
|
|
XSSFCell cell = sheet.getRow(0).getCell(0); |
|
|
|
XSSFCellStyle style = cell.getCellStyle(); |
|
|
|
|
|
|
|
String poundFmt = "\"\u00a3\"#,##0;[Red]\\-\"\u00a3\"#,##0"; |
|
|
|
// not expected normally, id of a custom format should be gerater |
|
|
|
// than BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX |
|
|
|
short poundFmtIdx = 6; |
|
|
|
|
|
|
|
assertEquals(poundFmt, style.getDataFormatString()); |
|
|
|
assertEquals(poundFmtIdx, style.getDataFormat()); |
|
|
|
assertEquals("\u00a31", df.formatCellValue(cell)); |
|
|
|
|
|
|
|
|
|
|
|
XSSFDataFormat dataFormat = wb.createDataFormat(); |
|
|
|
assertEquals(poundFmtIdx, dataFormat.getFormat(poundFmt)); |
|
|
|
assertEquals(poundFmt, dataFormat.getFormat(poundFmtIdx)); |
|
|
|
|
|
|
|
// an attempt to register an existing format returns its index |
|
|
|
assertEquals(poundFmtIdx, wb.getStylesSource().putNumberFormat(poundFmt)); |
|
|
|
|
|
|
|
// now create a custom format with Pound (\u00a3) |
|
|
|
short customFmtIdx = dataFormat.getFormat("\u00a3##.00[Yellow]"); |
|
|
|
assertTrue(customFmtIdx > BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX ); |
|
|
|
assertEquals("\u00a3##.00[Yellow]", dataFormat.getFormat(customFmtIdx)); |
|
|
|
|
|
|
|
} |
|
|
|
} |