mirror of https://github.com/apache/poi.git
Sonar fixes
Fixed offset of compare picture in resize_compare.xlsx git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1885280 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
09464f1fea
commit
fb2a96a048
Binary file not shown.
|
@ -110,4 +110,5 @@ module org.apache.poi.poi {
|
||||||
opens org.apache.poi.hpsf.basic to org.junit.platform.commons;
|
opens org.apache.poi.hpsf.basic to org.junit.platform.commons;
|
||||||
opens org.apache.poi.hssf.record.pivot to org.junit.platform.commons;
|
opens org.apache.poi.hssf.record.pivot to org.junit.platform.commons;
|
||||||
opens org.apache.poi.hssf.dev to org.junit.platform.commons;
|
opens org.apache.poi.hssf.dev to org.junit.platform.commons;
|
||||||
|
opens org.apache.poi.ss.usermodel to org.junit.platform.commons;
|
||||||
}
|
}
|
|
@ -17,13 +17,10 @@
|
||||||
|
|
||||||
package org.apache.poi.ss.tests.usermodel;
|
package org.apache.poi.ss.tests.usermodel;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
import org.apache.poi.ss.ITestDataProvider;
|
import org.apache.poi.ss.ITestDataProvider;
|
||||||
import org.apache.poi.ss.usermodel.BaseTestRow;
|
import org.apache.poi.ss.usermodel.BaseTestRow;
|
||||||
import org.apache.poi.xssf.streaming.SXSSFRow;
|
import org.apache.poi.xssf.streaming.SXSSFRow;
|
||||||
import org.apache.poi.xssf.usermodel.XSSFRow;
|
import org.apache.poi.xssf.usermodel.XSSFRow;
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class for combined testing of XML-specific functionality of
|
* Class for combined testing of XML-specific functionality of
|
||||||
|
@ -36,14 +33,4 @@ public abstract class BaseTestXRow extends BaseTestRow {
|
||||||
protected BaseTestXRow(ITestDataProvider testDataProvider) {
|
protected BaseTestXRow(ITestDataProvider testDataProvider) {
|
||||||
super(testDataProvider);
|
super(testDataProvider);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testRowBounds() throws IOException {
|
|
||||||
baseTestRowBounds(_testDataProvider.getSpreadsheetVersion().getLastRowIndex());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testCellBounds() throws IOException {
|
|
||||||
baseTestCellBounds(_testDataProvider.getSpreadsheetVersion().getLastColumnIndex());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -306,4 +306,8 @@ public final class TestDeferredSXSSFWorkbook extends BaseTestXWorkbook {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void changeSheetNameWithSharedFormulas() {
|
||||||
|
/* not implemented */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,6 @@ package org.apache.poi.xssf.streaming;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
import static org.junit.jupiter.api.Assertions.fail;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
@ -49,6 +48,10 @@ public final class TestSXSSFFormulaEvaluation extends BaseTestFormulaEvaluator
|
||||||
super(SXSSFITestDataProvider.instance);
|
super(SXSSFITestDataProvider.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testSharedFormulas() throws IOException {
|
||||||
|
/* not implemented */
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* EvaluateAll will normally fail, as any reference or
|
* EvaluateAll will normally fail, as any reference or
|
||||||
* formula outside of the window will fail, and any
|
* formula outside of the window will fail, and any
|
||||||
|
|
|
@ -27,7 +27,6 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
import static org.junit.jupiter.api.Assertions.assertSame;
|
import static org.junit.jupiter.api.Assertions.assertSame;
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.junit.jupiter.api.Assertions.fail;
|
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
|
@ -534,4 +533,8 @@ public final class TestSXSSFWorkbook extends BaseTestXWorkbook {
|
||||||
|
|
||||||
wb.close();
|
wb.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void changeSheetNameWithSharedFormulas() {
|
||||||
|
/* not implemented */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,17 +17,16 @@
|
||||||
|
|
||||||
package org.apache.poi.xssf.usermodel;
|
package org.apache.poi.xssf.usermodel;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.apache.poi.xssf.XSSFTestDataSamples.openSampleWorkbook;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.apache.poi.ss.formula.ConditionalFormattingEvaluator;
|
import org.apache.poi.ss.formula.ConditionalFormattingEvaluator;
|
||||||
import org.apache.poi.ss.formula.WorkbookEvaluatorProvider;
|
import org.apache.poi.ss.formula.WorkbookEvaluatorProvider;
|
||||||
import org.apache.poi.ss.usermodel.BaseTestDataFormat;
|
import org.apache.poi.ss.usermodel.BaseTestDataFormat;
|
||||||
import org.apache.poi.ss.usermodel.BuiltinFormats;
|
|
||||||
import org.apache.poi.ss.usermodel.Cell;
|
import org.apache.poi.ss.usermodel.Cell;
|
||||||
import org.apache.poi.ss.usermodel.CellStyle;
|
import org.apache.poi.ss.usermodel.CellStyle;
|
||||||
import org.apache.poi.ss.usermodel.DataFormat;
|
|
||||||
import org.apache.poi.ss.usermodel.DataFormatter;
|
import org.apache.poi.ss.usermodel.DataFormatter;
|
||||||
import org.apache.poi.ss.usermodel.FormulaEvaluator;
|
import org.apache.poi.ss.usermodel.FormulaEvaluator;
|
||||||
import org.apache.poi.ss.usermodel.Workbook;
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
|
@ -45,106 +44,67 @@ public final class TestXSSFDataFormat extends BaseTestDataFormat {
|
||||||
super(XSSFITestDataProvider.instance);
|
super(XSSFITestDataProvider.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* [Bug 49928] formatCellValue returns incorrect value for \u00a3 formatted cells
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
@Test
|
|
||||||
public void test49928() throws IOException {
|
|
||||||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("49928.xlsx");
|
|
||||||
doTest49928Core(wb);
|
|
||||||
|
|
||||||
DataFormat dataFormat = wb.createDataFormat();
|
|
||||||
|
|
||||||
// As of 2015-12-27, there is no way to override a built-in number format with POI XSSFWorkbook
|
|
||||||
// 49928.xlsx has been saved with a poundFmt that overrides the default value (dollar)
|
|
||||||
short poundFmtIdx = wb.getSheetAt(0).getRow(0).getCell(0).getCellStyle().getDataFormat();
|
|
||||||
assertEquals(poundFmtIdx, dataFormat.getFormat(poundFmt));
|
|
||||||
|
|
||||||
// now create a custom format with Pound (\u00a3)
|
|
||||||
|
|
||||||
String customFmt = "\u00a3##.00[Yellow]";
|
|
||||||
assertNotBuiltInFormat(customFmt);
|
|
||||||
short customFmtIdx = dataFormat.getFormat(customFmt);
|
|
||||||
assertTrue(customFmtIdx >= BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX);
|
|
||||||
assertEquals(customFmt, dataFormat.getFormat(customFmtIdx));
|
|
||||||
|
|
||||||
wb.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* [Bug 58532] Handle formats that go numnum, numK, numM etc
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
@Test
|
|
||||||
public void test58532() throws IOException {
|
|
||||||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("FormatKM.xlsx");
|
|
||||||
doTest58532Core(wb);
|
|
||||||
wb.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [Bug 58778] Built-in number formats can be overridden with XSSFDataFormat.putFormat(int id, String fmt)
|
* [Bug 58778] Built-in number formats can be overridden with XSSFDataFormat.putFormat(int id, String fmt)
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void test58778() throws IOException {
|
public void test58778() throws IOException {
|
||||||
XSSFWorkbook wb1 = new XSSFWorkbook();
|
try (XSSFWorkbook wb1 = new XSSFWorkbook()) {
|
||||||
Cell cell = wb1.createSheet("bug58778").createRow(0).createCell(0);
|
Cell cell = wb1.createSheet("bug58778").createRow(0).createCell(0);
|
||||||
cell.setCellValue(5.25);
|
cell.setCellValue(5.25);
|
||||||
CellStyle style = wb1.createCellStyle();
|
CellStyle style = wb1.createCellStyle();
|
||||||
|
|
||||||
XSSFDataFormat dataFormat = wb1.createDataFormat();
|
XSSFDataFormat dataFormat = wb1.createDataFormat();
|
||||||
|
|
||||||
short poundFmtIdx = 6;
|
short poundFmtIdx = 6;
|
||||||
dataFormat.putFormat(poundFmtIdx, poundFmt);
|
dataFormat.putFormat(poundFmtIdx, POUND_FMT);
|
||||||
style.setDataFormat(poundFmtIdx);
|
style.setDataFormat(poundFmtIdx);
|
||||||
cell.setCellStyle(style);
|
cell.setCellStyle(style);
|
||||||
// Cell should appear as "<poundsymbol>5"
|
// Cell should appear as "<poundsymbol>5"
|
||||||
|
|
||||||
XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutCloseAndReadBack(wb1);
|
try (XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutCloseAndReadBack(wb1)) {
|
||||||
cell = wb2.getSheet("bug58778").getRow(0).getCell(0);
|
cell = wb2.getSheet("bug58778").getRow(0).getCell(0);
|
||||||
assertEquals(5.25, cell.getNumericCellValue(), 0);
|
assertEquals(5.25, cell.getNumericCellValue(), 0);
|
||||||
|
|
||||||
style = cell.getCellStyle();
|
style = cell.getCellStyle();
|
||||||
assertEquals(poundFmt, style.getDataFormatString());
|
assertEquals(POUND_FMT, style.getDataFormatString());
|
||||||
assertEquals(poundFmtIdx, style.getDataFormat());
|
assertEquals(poundFmtIdx, style.getDataFormat());
|
||||||
|
|
||||||
// manually check the file to make sure the cell is rendered as "<poundsymbol>5"
|
// manually check the file to make sure the cell is rendered as "<poundsymbol>5"
|
||||||
// Verified with LibreOffice 4.2.8.2 on 2015-12-28
|
// Verified with LibreOffice 4.2.8.2 on 2015-12-28
|
||||||
wb2.close();
|
}
|
||||||
wb1.close();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testConditionalFormattingEvaluation() throws IOException {
|
public void testConditionalFormattingEvaluation() throws IOException {
|
||||||
final Workbook wb = XSSFTestDataSamples.openSampleWorkbook("61060-conditional-number-formatting.xlsx");
|
try (Workbook wb = openSampleWorkbook("61060-conditional-number-formatting.xlsx")) {
|
||||||
|
|
||||||
final DataFormatter formatter = new DataFormatter();
|
final DataFormatter formatter = new DataFormatter();
|
||||||
final FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
|
final FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
|
||||||
final ConditionalFormattingEvaluator cfEvaluator = new ConditionalFormattingEvaluator(wb, (WorkbookEvaluatorProvider) evaluator);
|
final ConditionalFormattingEvaluator cfEvaluator = new ConditionalFormattingEvaluator(wb, (WorkbookEvaluatorProvider) evaluator);
|
||||||
|
|
||||||
CellReference ref = new CellReference("A1");
|
CellReference ref = new CellReference("A1");
|
||||||
Cell cell = wb.getSheetAt(0).getRow(ref.getRow()).getCell(ref.getCol());
|
Cell cell = wb.getSheetAt(0).getRow(ref.getRow()).getCell(ref.getCol());
|
||||||
assertEquals("0.10", formatter.formatCellValue(cell, evaluator, cfEvaluator));
|
assertEquals("0.10", formatter.formatCellValue(cell, evaluator, cfEvaluator));
|
||||||
// verify cell format without the conditional rule applied
|
// verify cell format without the conditional rule applied
|
||||||
assertEquals("0.1", formatter.formatCellValue(cell, evaluator));
|
assertEquals("0.1", formatter.formatCellValue(cell, evaluator));
|
||||||
|
|
||||||
ref = new CellReference("A3");
|
ref = new CellReference("A3");
|
||||||
cell = wb.getSheetAt(0).getRow(ref.getRow()).getCell(ref.getCol());
|
cell = wb.getSheetAt(0).getRow(ref.getRow()).getCell(ref.getCol());
|
||||||
assertEquals("-2.00E+03", formatter.formatCellValue(cell, evaluator, cfEvaluator));
|
assertEquals("-2.00E+03", formatter.formatCellValue(cell, evaluator, cfEvaluator));
|
||||||
// verify cell format without the conditional rule applied
|
// verify cell format without the conditional rule applied
|
||||||
assertEquals("-2000", formatter.formatCellValue(cell, evaluator));
|
assertEquals("-2000", formatter.formatCellValue(cell, evaluator));
|
||||||
|
|
||||||
ref = new CellReference("A4");
|
ref = new CellReference("A4");
|
||||||
cell = wb.getSheetAt(0).getRow(ref.getRow()).getCell(ref.getCol());
|
cell = wb.getSheetAt(0).getRow(ref.getRow()).getCell(ref.getCol());
|
||||||
assertEquals("100", formatter.formatCellValue(cell, evaluator, cfEvaluator));
|
assertEquals("100", formatter.formatCellValue(cell, evaluator, cfEvaluator));
|
||||||
|
|
||||||
ref = new CellReference("A5");
|
ref = new CellReference("A5");
|
||||||
cell = wb.getSheetAt(0).getRow(ref.getRow()).getCell(ref.getCol());
|
cell = wb.getSheetAt(0).getRow(ref.getRow()).getCell(ref.getCol());
|
||||||
assertEquals("$1,000", formatter.formatCellValue(cell, evaluator, cfEvaluator));
|
assertEquals("$1,000", formatter.formatCellValue(cell, evaluator, cfEvaluator));
|
||||||
// verify cell format without the conditional rule applied
|
// verify cell format without the conditional rule applied
|
||||||
assertEquals("1000", formatter.formatCellValue(cell, evaluator));
|
assertEquals("1000", formatter.formatCellValue(cell, evaluator));
|
||||||
|
}
|
||||||
wb.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ package org.apache.poi.xssf.usermodel;
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import org.apache.poi.common.usermodel.fonts.FontCharset;
|
import org.apache.poi.common.usermodel.fonts.FontCharset;
|
||||||
import org.apache.poi.ooxml.POIXMLException;
|
import org.apache.poi.ooxml.POIXMLException;
|
||||||
|
@ -35,6 +36,7 @@ import org.apache.poi.util.LocaleUtil;
|
||||||
import org.apache.poi.xssf.XSSFITestDataProvider;
|
import org.apache.poi.xssf.XSSFITestDataProvider;
|
||||||
import org.apache.poi.xssf.XSSFTestDataSamples;
|
import org.apache.poi.xssf.XSSFTestDataSamples;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.params.provider.Arguments;
|
||||||
import org.openxmlformats.schemas.officeDocument.x2006.sharedTypes.STVerticalAlignRun;
|
import org.openxmlformats.schemas.officeDocument.x2006.sharedTypes.STVerticalAlignRun;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBooleanProperty;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBooleanProperty;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColor;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColor;
|
||||||
|
@ -55,9 +57,9 @@ public final class TestXSSFFont extends BaseTestFont{
|
||||||
super(XSSFITestDataProvider.instance);
|
super(XSSFITestDataProvider.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@SuppressWarnings("unused")
|
||||||
public void testDefaultFont() throws IOException {
|
public static Stream<Arguments> defaultFont() {
|
||||||
baseTestDefaultFont("Calibri", (short) 220, IndexedColors.BLACK.getIndex());
|
return Stream.of(Arguments.of("Calibri", (short) 220, IndexedColors.BLACK.getIndex()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -157,18 +159,18 @@ public final class TestXSSFFont extends BaseTestFont{
|
||||||
// Now try with a few sample files
|
// Now try with a few sample files
|
||||||
|
|
||||||
// Normal charset
|
// Normal charset
|
||||||
XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("Formatting.xlsx");
|
try (XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("Formatting.xlsx")) {
|
||||||
assertEquals(0,
|
assertEquals(0,
|
||||||
wb1.getSheetAt(0).getRow(0).getCell(0).getCellStyle().getFont().getCharSet()
|
wb1.getSheetAt(0).getRow(0).getCell(0).getCellStyle().getFont().getCharSet()
|
||||||
);
|
);
|
||||||
wb1.close();
|
}
|
||||||
|
|
||||||
// GB2312 charset
|
// GB2312 charset
|
||||||
XSSFWorkbook wb2 = XSSFTestDataSamples.openSampleWorkbook("49273.xlsx");
|
try (XSSFWorkbook wb2 = XSSFTestDataSamples.openSampleWorkbook("49273.xlsx")) {
|
||||||
assertEquals(134,
|
assertEquals(134,
|
||||||
wb2.getSheetAt(0).getRow(0).getCell(0).getCellStyle().getFont().getCharSet()
|
wb2.getSheetAt(0).getRow(0).getCell(0).getCellStyle().getFont().getCharSet()
|
||||||
);
|
);
|
||||||
wb2.close();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -360,12 +362,12 @@ public final class TestXSSFFont extends BaseTestFont{
|
||||||
// store test from TestSheetUtil here as it uses XSSF
|
// store test from TestSheetUtil here as it uses XSSF
|
||||||
@Test
|
@Test
|
||||||
public void testCanComputeWidthXSSF() throws IOException {
|
public void testCanComputeWidthXSSF() throws IOException {
|
||||||
Workbook wb = new XSSFWorkbook();
|
try (Workbook wb = new XSSFWorkbook()) {
|
||||||
|
|
||||||
// cannot check on result because on some machines we get back false here!
|
// cannot check on result because on some machines we get back false here!
|
||||||
SheetUtil.canComputeColumnWidth(wb.getFontAt(0));
|
SheetUtil.canComputeColumnWidth(wb.getFontAt(0));
|
||||||
|
|
||||||
wb.close();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// store test from TestSheetUtil here as it uses XSSF
|
// store test from TestSheetUtil here as it uses XSSF
|
||||||
|
@ -383,101 +385,101 @@ public final class TestXSSFFont extends BaseTestFont{
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testFindFont() throws IOException {
|
public void testFindFont() throws IOException {
|
||||||
XSSFWorkbook wb = new XSSFWorkbook();
|
try (XSSFWorkbook wb = new XSSFWorkbook()) {
|
||||||
assertEquals(1, wb.getNumberOfFonts());
|
assertEquals(1, wb.getNumberOfFonts());
|
||||||
|
|
||||||
XSSFSheet s = wb.createSheet();
|
XSSFSheet s = wb.createSheet();
|
||||||
s.createRow(0);
|
s.createRow(0);
|
||||||
s.createRow(1);
|
s.createRow(1);
|
||||||
s.getRow(0).createCell(0);
|
s.getRow(0).createCell(0);
|
||||||
s.getRow(1).createCell(0);
|
s.getRow(1).createCell(0);
|
||||||
|
|
||||||
assertEquals(1, wb.getNumberOfFonts());
|
assertEquals(1, wb.getNumberOfFonts());
|
||||||
|
|
||||||
XSSFFont f1 = wb.getFontAt(0);
|
XSSFFont f1 = wb.getFontAt(0);
|
||||||
assertFalse(f1.getBold());
|
assertFalse(f1.getBold());
|
||||||
|
|
||||||
// Check that asking for the same font
|
// Check that asking for the same font
|
||||||
// multiple times gives you the same thing.
|
// multiple times gives you the same thing.
|
||||||
// Otherwise, our tests wouldn't work!
|
// Otherwise, our tests wouldn't work!
|
||||||
assertSame(wb.getFontAt(0), wb.getFontAt(0));
|
assertSame(wb.getFontAt(0), wb.getFontAt(0));
|
||||||
assertEquals(
|
assertEquals(
|
||||||
wb.getFontAt(0),
|
wb.getFontAt(0),
|
||||||
wb.getFontAt(0)
|
wb.getFontAt(0)
|
||||||
);
|
);
|
||||||
|
|
||||||
// Look for a new font we have
|
// Look for a new font we have
|
||||||
// yet to add
|
// yet to add
|
||||||
assertNull(
|
assertNull(
|
||||||
wb.findFont(
|
wb.findFont(
|
||||||
false, IndexedColors.INDIGO.getIndex(), (short) 22,
|
false, IndexedColors.INDIGO.getIndex(), (short) 22,
|
||||||
"Thingy", false, true, (short) 2, (byte) 2
|
"Thingy", false, true, (short) 2, (byte) 2
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
assertNull(
|
assertNull(
|
||||||
wb.getStylesSource().findFont(
|
wb.getStylesSource().findFont(
|
||||||
false, new XSSFColor(IndexedColors.INDIGO, new DefaultIndexedColorMap()), (short) 22,
|
false, new XSSFColor(IndexedColors.INDIGO, new DefaultIndexedColorMap()), (short) 22,
|
||||||
"Thingy", false, true, (short) 2, (byte) 2
|
"Thingy", false, true, (short) 2, (byte) 2
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
XSSFFont nf = wb.createFont();
|
XSSFFont nf = wb.createFont();
|
||||||
assertEquals(2, wb.getNumberOfFonts());
|
assertEquals(2, wb.getNumberOfFonts());
|
||||||
|
|
||||||
assertEquals(1, nf.getIndex());
|
assertEquals(1, nf.getIndex());
|
||||||
assertEquals(nf, wb.getFontAt(1));
|
assertEquals(nf, wb.getFontAt(1));
|
||||||
|
|
||||||
nf.setBold(false);
|
nf.setBold(false);
|
||||||
nf.setColor(IndexedColors.INDIGO.getIndex());
|
nf.setColor(IndexedColors.INDIGO.getIndex());
|
||||||
nf.setFontHeight((short) 22);
|
nf.setFontHeight((short) 22);
|
||||||
nf.setFontName("Thingy");
|
nf.setFontName("Thingy");
|
||||||
nf.setItalic(false);
|
nf.setItalic(false);
|
||||||
nf.setStrikeout(true);
|
nf.setStrikeout(true);
|
||||||
nf.setTypeOffset((short) 2);
|
nf.setTypeOffset((short) 2);
|
||||||
nf.setUnderline((byte) 2);
|
nf.setUnderline((byte) 2);
|
||||||
|
|
||||||
assertEquals(2, wb.getNumberOfFonts());
|
assertEquals(2, wb.getNumberOfFonts());
|
||||||
assertEquals(nf, wb.getFontAt(1));
|
assertEquals(nf, wb.getFontAt(1));
|
||||||
|
|
||||||
assertNotSame(wb.getFontAt(0), wb.getFontAt(1));
|
assertNotSame(wb.getFontAt(0), wb.getFontAt(1));
|
||||||
|
|
||||||
// Find it now
|
// Find it now
|
||||||
assertNotNull(
|
assertNotNull(
|
||||||
wb.findFont(
|
wb.findFont(
|
||||||
false, IndexedColors.INDIGO.getIndex(), (short) 22,
|
false, IndexedColors.INDIGO.getIndex(), (short) 22,
|
||||||
"Thingy", false, true, (short) 2, (byte) 2
|
"Thingy", false, true, (short) 2, (byte) 2
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
assertNotNull(
|
assertNotNull(
|
||||||
wb.getStylesSource().findFont(
|
wb.getStylesSource().findFont(
|
||||||
false, new XSSFColor(IndexedColors.INDIGO, new DefaultIndexedColorMap()), (short) 22,
|
false, new XSSFColor(IndexedColors.INDIGO, new DefaultIndexedColorMap()), (short) 22,
|
||||||
"Thingy", false, true, (short) 2, (byte) 2
|
"Thingy", false, true, (short) 2, (byte) 2
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
XSSFFont font = wb.findFont(
|
XSSFFont font = wb.findFont(
|
||||||
false, IndexedColors.INDIGO.getIndex(), (short) 22,
|
false, IndexedColors.INDIGO.getIndex(), (short) 22,
|
||||||
"Thingy", false, true, (short) 2, (byte) 2
|
"Thingy", false, true, (short) 2, (byte) 2
|
||||||
);
|
);
|
||||||
assertNotNull(font);
|
assertNotNull(font);
|
||||||
assertEquals(
|
assertEquals(
|
||||||
1,
|
1,
|
||||||
font.getIndex()
|
font.getIndex()
|
||||||
);
|
);
|
||||||
assertEquals(nf,
|
assertEquals(nf,
|
||||||
wb.findFont(
|
wb.findFont(
|
||||||
false, IndexedColors.INDIGO.getIndex(), (short) 22,
|
false, IndexedColors.INDIGO.getIndex(), (short) 22,
|
||||||
"Thingy", false, true, (short) 2, (byte) 2
|
"Thingy", false, true, (short) 2, (byte) 2
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
assertEquals(nf,
|
assertEquals(nf,
|
||||||
wb.getStylesSource().findFont(
|
wb.getStylesSource().findFont(
|
||||||
false, new XSSFColor(IndexedColors.INDIGO, new DefaultIndexedColorMap()), (short) 22,
|
false, new XSSFColor(IndexedColors.INDIGO, new DefaultIndexedColorMap()), (short) 22,
|
||||||
"Thingy", false, true, (short) 2, (byte) 2
|
"Thingy", false, true, (short) 2, (byte) 2
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
wb.close();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -17,15 +17,16 @@
|
||||||
|
|
||||||
package org.apache.poi.xssf.usermodel;
|
package org.apache.poi.xssf.usermodel;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
import static org.junit.jupiter.api.Assertions.assertSame;
|
import static org.junit.jupiter.api.Assertions.assertSame;
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
import static org.junit.jupiter.api.Assertions.fail;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
import org.apache.poi.hssf.HSSFTestDataSamples;
|
import org.apache.poi.hssf.HSSFTestDataSamples;
|
||||||
import org.apache.poi.ss.usermodel.BaseTestFormulaEvaluator;
|
import org.apache.poi.ss.usermodel.BaseTestFormulaEvaluator;
|
||||||
|
@ -40,6 +41,8 @@ import org.apache.poi.xssf.XSSFITestDataProvider;
|
||||||
import org.apache.poi.xssf.XSSFTestDataSamples;
|
import org.apache.poi.xssf.XSSFTestDataSamples;
|
||||||
import org.junit.jupiter.api.Disabled;
|
import org.junit.jupiter.api.Disabled;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
|
import org.junit.jupiter.params.provider.ValueSource;
|
||||||
|
|
||||||
public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator {
|
public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator {
|
||||||
|
|
||||||
|
@ -47,16 +50,11 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator {
|
||||||
super(XSSFITestDataProvider.instance);
|
super(XSSFITestDataProvider.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testSharedFormulas() throws IOException {
|
|
||||||
baseTestSharedFormulas("shared_formulas.xlsx");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSharedFormulas_evaluateInCell() throws IOException {
|
public void testSharedFormulas_evaluateInCell() throws IOException {
|
||||||
try (XSSFWorkbook wb = (XSSFWorkbook)_testDataProvider.openSampleWorkbook("49872.xlsx")) {
|
try (Workbook wb = _testDataProvider.openSampleWorkbook("49872.xlsx")) {
|
||||||
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
|
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
|
||||||
XSSFSheet sheet = wb.getSheetAt(0);
|
Sheet sheet = wb.getSheetAt(0);
|
||||||
|
|
||||||
double result = 3.0;
|
double result = 3.0;
|
||||||
|
|
||||||
|
@ -67,14 +65,14 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator {
|
||||||
// C3 and D3: <f t="shared" si="0"/>
|
// C3 and D3: <f t="shared" si="0"/>
|
||||||
|
|
||||||
// get B3 and evaluate it in the cell
|
// get B3 and evaluate it in the cell
|
||||||
XSSFCell b3 = sheet.getRow(2).getCell(1);
|
Cell b3 = sheet.getRow(2).getCell(1);
|
||||||
assertEquals(result, evaluator.evaluateInCell(b3).getNumericCellValue(), 0);
|
assertEquals(result, evaluator.evaluateInCell(b3).getNumericCellValue(), 0);
|
||||||
|
|
||||||
//at this point the master formula is gone, but we are still able to evaluate dependent cells
|
//at this point the master formula is gone, but we are still able to evaluate dependent cells
|
||||||
XSSFCell c3 = sheet.getRow(2).getCell(2);
|
Cell c3 = sheet.getRow(2).getCell(2);
|
||||||
assertEquals(result, evaluator.evaluateInCell(c3).getNumericCellValue(), 0);
|
assertEquals(result, evaluator.evaluateInCell(c3).getNumericCellValue(), 0);
|
||||||
|
|
||||||
XSSFCell d3 = sheet.getRow(2).getCell(3);
|
Cell d3 = sheet.getRow(2).getCell(3);
|
||||||
assertEquals(result, evaluator.evaluateInCell(d3).getNumericCellValue(), 0);
|
assertEquals(result, evaluator.evaluateInCell(d3).getNumericCellValue(), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -84,16 +82,16 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator {
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testEvaluateColumnGreaterThan255() throws IOException {
|
public void testEvaluateColumnGreaterThan255() throws IOException {
|
||||||
try (XSSFWorkbook wb = (XSSFWorkbook) _testDataProvider.openSampleWorkbook("50096.xlsx")) {
|
try (Workbook wb = _testDataProvider.openSampleWorkbook("50096.xlsx")) {
|
||||||
XSSFFormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
|
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The first row simply contains the numbers 1 - 300.
|
* The first row simply contains the numbers 1 - 300.
|
||||||
* The second row simply refers to the cell value above in the first row by a simple formula.
|
* The second row simply refers to the cell value above in the first row by a simple formula.
|
||||||
*/
|
*/
|
||||||
for (int i = 245; i < 265; i++) {
|
for (int i = 245; i < 265; i++) {
|
||||||
XSSFCell cell_noformula = wb.getSheetAt(0).getRow(0).getCell(i);
|
Cell cell_noformula = wb.getSheetAt(0).getRow(0).getCell(i);
|
||||||
XSSFCell cell_formula = wb.getSheetAt(0).getRow(1).getCell(i);
|
Cell cell_formula = wb.getSheetAt(0).getRow(1).getCell(i);
|
||||||
|
|
||||||
CellReference ref_noformula = new CellReference(cell_noformula.getRowIndex(), cell_noformula.getColumnIndex());
|
CellReference ref_noformula = new CellReference(cell_noformula.getRowIndex(), cell_noformula.getColumnIndex());
|
||||||
CellReference ref_formula = new CellReference(cell_noformula.getRowIndex(), cell_noformula.getColumnIndex());
|
CellReference ref_formula = new CellReference(cell_noformula.getRowIndex(), cell_noformula.getColumnIndex());
|
||||||
|
@ -118,9 +116,9 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator {
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testReferencesToOtherWorkbooks() throws Exception {
|
public void testReferencesToOtherWorkbooks() throws Exception {
|
||||||
try (XSSFWorkbook wb = (XSSFWorkbook) _testDataProvider.openSampleWorkbook("ref2-56737.xlsx")) {
|
try (Workbook wb = _testDataProvider.openSampleWorkbook("ref2-56737.xlsx")) {
|
||||||
XSSFFormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
|
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
|
||||||
XSSFSheet s = wb.getSheetAt(0);
|
Sheet s = wb.getSheetAt(0);
|
||||||
|
|
||||||
// References to a .xlsx file
|
// References to a .xlsx file
|
||||||
Row rXSLX = s.getRow(2);
|
Row rXSLX = s.getRow(2);
|
||||||
|
@ -226,16 +224,16 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* If a formula references cells or named ranges in another workbook,
|
* If a formula references cells or named ranges in another workbook,
|
||||||
* but that isn't available at evaluation time, the cached values
|
* but that isn't available at evaluation time, the cached values
|
||||||
* should be used instead
|
* should be used instead
|
||||||
* TODO Add the support then add a unit test
|
* TODO Add the support then add a unit test
|
||||||
* See bug #56752
|
* See bug #56752
|
||||||
*/
|
*/
|
||||||
@Disabled
|
// @Disabled
|
||||||
public void testCachedReferencesToOtherWorkbooks() {
|
// public void testCachedReferencesToOtherWorkbooks() {
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A handful of functions (such as SUM, COUNTA, MIN) support
|
* A handful of functions (such as SUM, COUNTA, MIN) support
|
||||||
|
@ -244,12 +242,13 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator {
|
||||||
* This test, based on common test files for HSSF and XSSF, checks
|
* This test, based on common test files for HSSF and XSSF, checks
|
||||||
* that we can correctly evaluate these
|
* that we can correctly evaluate these
|
||||||
*/
|
*/
|
||||||
@Test
|
@ParameterizedTest
|
||||||
public void testMultiSheetReferencesHSSFandXSSF() throws Exception {
|
@ValueSource(strings = {"55906-MultiSheetRefs.xls","55906-MultiSheetRefs.xlsx"})
|
||||||
Workbook wb1 = HSSFTestDataSamples.openSampleWorkbook("55906-MultiSheetRefs.xls");
|
public void testMultiSheetReferencesHSSFandXSSF(String sampleFileName) throws Exception {
|
||||||
Workbook wb2 = XSSFTestDataSamples.openSampleWorkbook("55906-MultiSheetRefs.xlsx");
|
Function<String, Workbook> fun = sampleFileName.endsWith("x")
|
||||||
|
? XSSFTestDataSamples::openSampleWorkbook : HSSFTestDataSamples::openSampleWorkbook;
|
||||||
|
|
||||||
for (Workbook wb : new Workbook[] {wb1,wb2}) {
|
try (Workbook wb = fun.apply(sampleFileName)) {
|
||||||
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
|
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
|
||||||
Sheet s1 = wb.getSheetAt(0);
|
Sheet s1 = wb.getSheetAt(0);
|
||||||
|
|
||||||
|
@ -299,9 +298,6 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator {
|
||||||
assertEquals("COUNTA(Sheet1:Sheet3!E1)", countA_3F.getCellFormula());
|
assertEquals("COUNTA(Sheet1:Sheet3!E1)", countA_3F.getCellFormula());
|
||||||
assertEquals("3.0", evaluator.evaluate(countA_3F).formatAsString());
|
assertEquals("3.0", evaluator.evaluate(countA_3F).formatAsString());
|
||||||
}
|
}
|
||||||
|
|
||||||
wb2.close();
|
|
||||||
wb1.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -311,12 +307,13 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator {
|
||||||
* This test, based on common test files for HSSF and XSSF, checks
|
* This test, based on common test files for HSSF and XSSF, checks
|
||||||
* that we can correctly evaluate these
|
* that we can correctly evaluate these
|
||||||
*/
|
*/
|
||||||
@Test
|
@ParameterizedTest
|
||||||
public void testMultiSheetAreasHSSFandXSSF() throws IOException {
|
@ValueSource(strings = {"55906-MultiSheetRefs.xls","55906-MultiSheetRefs.xlsx"})
|
||||||
Workbook wb1 = HSSFTestDataSamples.openSampleWorkbook("55906-MultiSheetRefs.xls");
|
public void testMultiSheetAreasHSSFandXSSF(String sampleFileName) throws Exception {
|
||||||
Workbook wb2 = XSSFTestDataSamples.openSampleWorkbook("55906-MultiSheetRefs.xlsx");
|
Function<String, Workbook> fun = sampleFileName.endsWith("x")
|
||||||
|
? XSSFTestDataSamples::openSampleWorkbook : HSSFTestDataSamples::openSampleWorkbook;
|
||||||
|
|
||||||
for (Workbook wb : new Workbook[]{wb1,wb2}) {
|
try (Workbook wb = fun.apply(sampleFileName)) {
|
||||||
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
|
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
|
||||||
Sheet s1 = wb.getSheetAt(0);
|
Sheet s1 = wb.getSheetAt(0);
|
||||||
|
|
||||||
|
@ -349,28 +346,20 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator {
|
||||||
assertEquals("COUNT(Sheet1:Sheet3!$A$1:$B$2)", countFA.getCellFormula());
|
assertEquals("COUNT(Sheet1:Sheet3!$A$1:$B$2)", countFA.getCellFormula());
|
||||||
assertEquals("4.0", evaluator.evaluate(countFA).formatAsString());
|
assertEquals("4.0", evaluator.evaluate(countFA).formatAsString());
|
||||||
}
|
}
|
||||||
|
|
||||||
wb2.close();
|
|
||||||
wb1.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// bug 57721
|
@ParameterizedTest
|
||||||
@Test
|
@ValueSource(strings = {
|
||||||
public void structuredReferences() throws IOException {
|
// bug 57721
|
||||||
verifyAllFormulasInWorkbookCanBeEvaluated("evaluate_formula_with_structured_table_references.xlsx");
|
"evaluate_formula_with_structured_table_references.xlsx"
|
||||||
}
|
|
||||||
|
|
||||||
// bug 57840
|
// bug 57840:
|
||||||
@Disabled("Takes over a minute to evaluate all formulas in this large workbook. Run this test when profiling for formula evaluation speed.")
|
// Takes over a minute to evaluate all formulas in this large workbook. Run this test when profiling for formula evaluation speed.
|
||||||
@Test
|
// , "StructuredRefs-lots-with-lookups.xlsx"
|
||||||
public void testLotsOfFormulasWithStructuredReferencesToCalculatedTableColumns() throws IOException {
|
})
|
||||||
verifyAllFormulasInWorkbookCanBeEvaluated("StructuredRefs-lots-with-lookups.xlsx");
|
public void verifyAllFormulasInWorkbookCanBeEvaluated(String sampleWorkbook) throws IOException {
|
||||||
}
|
|
||||||
|
|
||||||
// FIXME: use junit4 parametrization
|
|
||||||
private static void verifyAllFormulasInWorkbookCanBeEvaluated(String sampleWorkbook) throws IOException {
|
|
||||||
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook(sampleWorkbook)) {
|
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook(sampleWorkbook)) {
|
||||||
XSSFFormulaEvaluator.evaluateAllFormulaCells(wb);
|
assertDoesNotThrow(() -> XSSFFormulaEvaluator.evaluateAllFormulaCells(wb));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -415,19 +404,19 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Disabled // this is from an open bug/discussion over handling localization for number formats
|
@Disabled("this is from an open bug/discussion over handling localization for number formats")
|
||||||
public void testBug61495() throws IOException {
|
public void testBug61495() throws IOException {
|
||||||
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("61495-test.xlsm")) {
|
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("61495-test.xlsm")) {
|
||||||
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
|
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
|
||||||
Cell cell = wb.getSheetAt(0).getRow(0).getCell(1);
|
Cell cell = wb.getSheetAt(0).getRow(0).getCell(1);
|
||||||
// assertEquals("D 67.10", cell.getStringCellValue());
|
// assertEquals("D 67.10", cell.getStringCellValue());
|
||||||
|
|
||||||
CellValue value = evaluator.evaluate(cell);
|
String act = evaluator.evaluate(cell).getStringValue();
|
||||||
assertEquals("D 67.10",
|
assertEquals("D 67.10", act);
|
||||||
value.getStringValue());
|
|
||||||
|
|
||||||
assertEquals("D 0,068",
|
cell = wb.getSheetAt(0).getRow(1).getCell(1);
|
||||||
evaluator.evaluate(wb.getSheetAt(0).getRow(1).getCell(1)).getStringValue());
|
act = evaluator.evaluate(cell).getStringValue();
|
||||||
|
assertEquals("D 0,068", act);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -444,7 +433,7 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator {
|
||||||
Cell value = evaluator.evaluateInCell(a2);
|
Cell value = evaluator.evaluateInCell(a2);
|
||||||
assertEquals("a value", value.getStringCellValue(), "wrong value A2");
|
assertEquals("a value", value.getStringCellValue(), "wrong value A2");
|
||||||
|
|
||||||
// evaluator.clearAllCachedResultValues();
|
// evaluator.clearAllCachedResultValues();
|
||||||
|
|
||||||
Cell a3 = wb.getSheetAt(0).getRow(2).getCell(0);
|
Cell a3 = wb.getSheetAt(0).getRow(2).getCell(0);
|
||||||
value = evaluator.evaluateInCell(a3);
|
value = evaluator.evaluateInCell(a3);
|
||||||
|
|
|
@ -26,6 +26,8 @@ import java.util.List;
|
||||||
|
|
||||||
import org.apache.poi.ss.usermodel.BaseTestPicture;
|
import org.apache.poi.ss.usermodel.BaseTestPicture;
|
||||||
import org.apache.poi.ss.usermodel.ClientAnchor.AnchorType;
|
import org.apache.poi.ss.usermodel.ClientAnchor.AnchorType;
|
||||||
|
import org.apache.poi.ss.usermodel.Drawing;
|
||||||
|
import org.apache.poi.ss.usermodel.Picture;
|
||||||
import org.apache.poi.util.LocaleUtil;
|
import org.apache.poi.util.LocaleUtil;
|
||||||
import org.apache.poi.xssf.XSSFITestDataProvider;
|
import org.apache.poi.xssf.XSSFITestDataProvider;
|
||||||
import org.apache.poi.xssf.XSSFTestDataSamples;
|
import org.apache.poi.xssf.XSSFTestDataSamples;
|
||||||
|
@ -39,20 +41,10 @@ public final class TestXSSFPicture extends BaseTestPicture {
|
||||||
super(XSSFITestDataProvider.instance);
|
super(XSSFITestDataProvider.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected Picture getPictureShape(Drawing<?> pat, int picIdx) {
|
||||||
@Test
|
return (Picture)((XSSFDrawing)pat).getShapes().get(picIdx);
|
||||||
public void resize() throws Exception {
|
|
||||||
try (XSSFWorkbook wb = XSSFITestDataProvider.instance.openSampleWorkbook("resize_compare.xlsx")) {
|
|
||||||
XSSFDrawing dp = wb.getSheetAt(0).createDrawingPatriarch();
|
|
||||||
List<XSSFShape> pics = dp.getShapes();
|
|
||||||
XSSFPicture inpPic = (XSSFPicture) pics.get(0);
|
|
||||||
XSSFPicture cmpPic = (XSSFPicture) pics.get(0);
|
|
||||||
|
|
||||||
baseTestResize(inpPic, cmpPic, 2.0, 2.0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void create() throws IOException {
|
public void create() throws IOException {
|
||||||
try (XSSFWorkbook wb = new XSSFWorkbook()) {
|
try (XSSFWorkbook wb = new XSSFWorkbook()) {
|
||||||
|
|
|
@ -101,11 +101,6 @@ public final class TestXSSFSheet extends BaseTestXSheet {
|
||||||
//super.defaultColumnStyle();
|
//super.defaultColumnStyle();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void getSetMargin() throws IOException {
|
|
||||||
baseTestGetSetMargin(new double[]{0.7, 0.7, 0.75, 0.75, 0.3, 0.3});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void existingHeaderFooter() throws IOException {
|
public void existingHeaderFooter() throws IOException {
|
||||||
XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("45540_classic_Header.xlsx");
|
XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("45540_classic_Header.xlsx");
|
||||||
|
@ -543,16 +538,15 @@ public final class TestXSSFSheet extends BaseTestXSheet {
|
||||||
// Save and re-load
|
// Save and re-load
|
||||||
try (XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1)) {
|
try (XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1)) {
|
||||||
sheet1 = wb2.getSheetAt(0);
|
sheet1 = wb2.getSheetAt(0);
|
||||||
// FIXME: forgot to reassign!
|
cols = sheet1.getCTWorksheet().getColsArray(0);
|
||||||
//cols = sheet1.getCTWorksheet().getColsArray(0);
|
|
||||||
|
|
||||||
assertEquals(6, cols.sizeOfColArray());
|
assertEquals(6, cols.sizeOfColArray());
|
||||||
checkColumnGroup(cols.getColArray(0), 4, 7); // false, true
|
checkColumnGroup(cols.getColArray(0), 4, 7, false, true);
|
||||||
checkColumnGroup(cols.getColArray(1), 8, 8, false, false);
|
checkColumnGroup(cols.getColArray(1), 8, 8, false, true);
|
||||||
checkColumnGroup(cols.getColArray(2), 9, 9); // false, true
|
checkColumnGroup(cols.getColArray(2), 9, 9, false, true);
|
||||||
checkColumnGroup(cols.getColArray(3), 10, 11); // false, true
|
checkColumnGroup(cols.getColArray(3), 10, 11, false, true);
|
||||||
checkColumnGroup(cols.getColArray(4), 12, 12, false, false);
|
checkColumnGroup(cols.getColArray(4), 12, 12, false, true);
|
||||||
checkColumnGroup(cols.getColArray(5), 13, 13, false, false);
|
checkColumnGroup(cols.getColArray(5), 13, 13, false, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,6 @@ import static org.junit.jupiter.api.Assertions.assertNull;
|
||||||
import static org.junit.jupiter.api.Assertions.assertSame;
|
import static org.junit.jupiter.api.Assertions.assertSame;
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.junit.jupiter.api.Assertions.fail;
|
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
|
@ -513,11 +512,6 @@ public final class TestXSSFWorkbook extends BaseTestXWorkbook {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void changeSheetNameWithSharedFormulas() throws IOException {
|
|
||||||
changeSheetNameWithSharedFormulas("shared_formulas.xlsx");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void columnWidthPOI52233() throws Exception {
|
public void columnWidthPOI52233() throws Exception {
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
|
|
@ -17,19 +17,20 @@
|
||||||
|
|
||||||
package org.apache.poi.hssf.usermodel;
|
package org.apache.poi.hssf.usermodel;
|
||||||
|
|
||||||
|
import static org.apache.poi.hssf.HSSFTestDataSamples.openSampleWorkbook;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.poi.hssf.HSSFITestDataProvider;
|
import org.apache.poi.hssf.HSSFITestDataProvider;
|
||||||
import org.apache.poi.hssf.HSSFTestDataSamples;
|
|
||||||
import org.apache.poi.ss.usermodel.BaseTestDataFormat;
|
import org.apache.poi.ss.usermodel.BaseTestDataFormat;
|
||||||
import org.apache.poi.ss.usermodel.BuiltinFormats;
|
|
||||||
import org.apache.poi.ss.usermodel.Cell;
|
import org.apache.poi.ss.usermodel.Cell;
|
||||||
import org.apache.poi.ss.usermodel.CellStyle;
|
import org.apache.poi.ss.usermodel.CellStyle;
|
||||||
import org.apache.poi.ss.usermodel.DataFormat;
|
|
||||||
import org.apache.poi.ss.usermodel.Row;
|
import org.apache.poi.ss.usermodel.Row;
|
||||||
|
import org.apache.poi.ss.usermodel.Sheet;
|
||||||
import org.apache.poi.util.POILogFactory;
|
import org.apache.poi.util.POILogFactory;
|
||||||
import org.apache.poi.util.POILogger;
|
import org.apache.poi.util.POILogger;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
@ -38,65 +39,31 @@ import org.junit.jupiter.api.Test;
|
||||||
* Tests for {@link HSSFDataFormat}
|
* Tests for {@link HSSFDataFormat}
|
||||||
*/
|
*/
|
||||||
public final class TestHSSFDataFormat extends BaseTestDataFormat {
|
public final class TestHSSFDataFormat extends BaseTestDataFormat {
|
||||||
private static POILogger _logger = POILogFactory.getLogger(TestHSSFDataFormat.class);
|
private static final POILogger _logger = POILogFactory.getLogger(TestHSSFDataFormat.class);
|
||||||
|
|
||||||
public TestHSSFDataFormat() {
|
public TestHSSFDataFormat() {
|
||||||
super(HSSFITestDataProvider.instance);
|
super(HSSFITestDataProvider.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* [Bug 49928] formatCellValue returns incorrect value for \u00a3 formatted cells
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
@Test
|
|
||||||
public void test49928() throws IOException {
|
|
||||||
HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("49928.xls");
|
|
||||||
doTest49928Core(wb);
|
|
||||||
|
|
||||||
// an attempt to register an existing format returns its index
|
|
||||||
int poundFmtIdx = wb.getSheetAt(0).getRow(0).getCell(0).getCellStyle().getDataFormat();
|
|
||||||
assertEquals(poundFmtIdx, wb.createDataFormat().getFormat(poundFmt));
|
|
||||||
|
|
||||||
// now create a custom format with Pound (\u00a3)
|
|
||||||
DataFormat dataFormat = wb.createDataFormat();
|
|
||||||
short customFmtIdx = dataFormat.getFormat("\u00a3##.00[Yellow]");
|
|
||||||
assertTrue(customFmtIdx >= BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX );
|
|
||||||
assertEquals("\u00a3##.00[Yellow]", dataFormat.getFormat(customFmtIdx));
|
|
||||||
|
|
||||||
wb.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* [Bug 58532] Handle formats that go numnum, numK, numM etc
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
@Test
|
|
||||||
public void test58532() throws IOException {
|
|
||||||
HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("FormatKM.xls");
|
|
||||||
doTest58532Core(wb);
|
|
||||||
wb.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bug 51378: getDataFormatString method call crashes when reading the test file
|
* Bug 51378: getDataFormatString method call crashes when reading the test file
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void test51378() throws IOException {
|
public void test51378() throws IOException {
|
||||||
HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("12561-1.xls");
|
List<String> expNull = Arrays.asList( "0-3-0","0-43-11" );
|
||||||
for (int i = 0; i < wb.getNumberOfSheets(); i++) {
|
try (HSSFWorkbook wb = openSampleWorkbook("12561-1.xls")) {
|
||||||
HSSFSheet sheet = wb.getSheetAt(i);
|
for (Sheet sheet : wb) {
|
||||||
for (Row row : sheet) {
|
for (Row row : sheet) {
|
||||||
for (Cell cell : row) {
|
for (Cell cell : row) {
|
||||||
CellStyle style = cell.getCellStyle();
|
CellStyle style = cell.getCellStyle();
|
||||||
|
assertNotNull(style);
|
||||||
String fmt = style.getDataFormatString();
|
String coord = wb.getSheetIndex(sheet)+"-"+cell.getRowIndex()+"-"+cell.getColumnIndex();
|
||||||
if(fmt == null) {
|
String fmt = style.getDataFormatString();
|
||||||
_logger.log(POILogger.WARN, cell + ": " + fmt);
|
assertEquals(expNull.contains(coord), fmt == null, coord+" unexpected");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wb.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,13 +17,15 @@
|
||||||
|
|
||||||
package org.apache.poi.hssf.usermodel;
|
package org.apache.poi.hssf.usermodel;
|
||||||
|
|
||||||
|
import static org.apache.poi.hssf.HSSFTestDataSamples.openSampleWorkbook;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.AbstractMap;
|
import java.util.AbstractMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.poi.hssf.HSSFTestDataSamples;
|
|
||||||
import org.apache.poi.ss.formula.EvaluationSheet;
|
import org.apache.poi.ss.formula.EvaluationSheet;
|
||||||
import org.apache.poi.ss.usermodel.BaseTestXEvaluationSheet;
|
import org.apache.poi.ss.usermodel.BaseTestXEvaluationSheet;
|
||||||
import org.apache.poi.ss.usermodel.Name;
|
|
||||||
import org.apache.poi.ss.usermodel.Sheet;
|
import org.apache.poi.ss.usermodel.Sheet;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
@ -35,13 +37,12 @@ public class TestHSSFEvaluationSheet extends BaseTestXEvaluationSheet {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMissingExternalName() {
|
public void testMissingExternalName() throws IOException {
|
||||||
HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("external_name.xls");
|
try (HSSFWorkbook wb = openSampleWorkbook("external_name.xls")) {
|
||||||
for (Name name : wb.getAllNames()) {
|
|
||||||
// this sometimes causes exceptions
|
// this sometimes causes exceptions
|
||||||
if(!name.isFunctionName()) {
|
wb.getAllNames().stream().filter(n -> !n.isFunctionName()).forEach(
|
||||||
name.getRefersToFormula();
|
n -> assertDoesNotThrow(n::getRefersToFormula)
|
||||||
}
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,17 +17,15 @@
|
||||||
|
|
||||||
package org.apache.poi.hssf.usermodel;
|
package org.apache.poi.hssf.usermodel;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import org.apache.poi.hssf.HSSFITestDataProvider;
|
import org.apache.poi.hssf.HSSFITestDataProvider;
|
||||||
import org.apache.poi.ss.usermodel.BaseTestFont;
|
import org.apache.poi.ss.usermodel.BaseTestFont;
|
||||||
import org.apache.poi.ss.usermodel.Font;
|
import org.apache.poi.ss.usermodel.Font;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.params.provider.Arguments;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests various functionality having to do with {@link org.apache.poi.ss.usermodel.Name}.
|
* Tests various functionality having to do with {@link org.apache.poi.ss.usermodel.Name}.
|
||||||
*
|
|
||||||
* @author Yegor Kozlov
|
|
||||||
*/
|
*/
|
||||||
public final class TestHSSFFont extends BaseTestFont {
|
public final class TestHSSFFont extends BaseTestFont {
|
||||||
|
|
||||||
|
@ -35,8 +33,8 @@ public final class TestHSSFFont extends BaseTestFont {
|
||||||
super(HSSFITestDataProvider.instance);
|
super(HSSFITestDataProvider.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@SuppressWarnings("unused")
|
||||||
public void testDefaultFont() throws IOException {
|
public static Stream<Arguments> defaultFont() {
|
||||||
baseTestDefaultFont(HSSFFont.FONT_ARIAL, (short)200, Font.COLOR_NORMAL);
|
return Stream.of(Arguments.of(HSSFFont.FONT_ARIAL, (short)200, Font.COLOR_NORMAL));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -286,9 +286,4 @@ public final class TestHSSFFormulaEvaluator extends BaseTestFormulaEvaluator {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testSharedFormulas() throws IOException {
|
|
||||||
baseTestSharedFormulas("shared_formulas.xls");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
package org.apache.poi.hssf.usermodel;
|
package org.apache.poi.hssf.usermodel;
|
||||||
|
|
||||||
|
import static org.apache.poi.hssf.HSSFTestDataSamples.openSampleWorkbook;
|
||||||
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
|
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
@ -32,6 +33,8 @@ import org.apache.poi.hssf.model.InternalSheet;
|
||||||
import org.apache.poi.ss.usermodel.BaseTestPicture;
|
import org.apache.poi.ss.usermodel.BaseTestPicture;
|
||||||
import org.apache.poi.ss.usermodel.ClientAnchor;
|
import org.apache.poi.ss.usermodel.ClientAnchor;
|
||||||
import org.apache.poi.ss.usermodel.CreationHelper;
|
import org.apache.poi.ss.usermodel.CreationHelper;
|
||||||
|
import org.apache.poi.ss.usermodel.Drawing;
|
||||||
|
import org.apache.poi.ss.usermodel.Picture;
|
||||||
import org.apache.poi.ss.usermodel.PictureData;
|
import org.apache.poi.ss.usermodel.PictureData;
|
||||||
import org.apache.poi.ss.usermodel.Workbook;
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
@ -42,16 +45,8 @@ public final class TestHSSFPicture extends BaseTestPicture {
|
||||||
super(HSSFITestDataProvider.instance);
|
super(HSSFITestDataProvider.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
protected Picture getPictureShape(Drawing<?> pat, int picIdx) {
|
||||||
public void resize() throws Exception {
|
return (Picture)((HSSFPatriarch)pat).getChildren().get(picIdx);
|
||||||
try (HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("resize_compare.xls")) {
|
|
||||||
HSSFPatriarch dp = wb.getSheetAt(0).createDrawingPatriarch();
|
|
||||||
List<HSSFShape> pics = dp.getChildren();
|
|
||||||
HSSFPicture inpPic = (HSSFPicture) pics.get(0);
|
|
||||||
HSSFPicture cmpPic = (HSSFPicture) pics.get(1);
|
|
||||||
|
|
||||||
baseTestResize(inpPic, cmpPic, 2.0, 2.0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -199,7 +194,7 @@ public final class TestHSSFPicture extends BaseTestPicture {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void readExistingImage() throws IOException {
|
public void readExistingImage() throws IOException {
|
||||||
try (HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("drawings.xls")) {
|
try (HSSFWorkbook wb = openSampleWorkbook("drawings.xls")) {
|
||||||
HSSFSheet sheet = wb.getSheet("picture");
|
HSSFSheet sheet = wb.getSheet("picture");
|
||||||
HSSFPatriarch drawing = sheet.getDrawingPatriarch();
|
HSSFPatriarch drawing = sheet.getDrawingPatriarch();
|
||||||
assertEquals(1, drawing.getChildren().size());
|
assertEquals(1, drawing.getChildren().size());
|
||||||
|
|
|
@ -29,7 +29,6 @@ import java.io.IOException;
|
||||||
import org.apache.poi.hssf.HSSFITestDataProvider;
|
import org.apache.poi.hssf.HSSFITestDataProvider;
|
||||||
import org.apache.poi.hssf.record.BlankRecord;
|
import org.apache.poi.hssf.record.BlankRecord;
|
||||||
import org.apache.poi.hssf.record.RowRecord;
|
import org.apache.poi.hssf.record.RowRecord;
|
||||||
import org.apache.poi.ss.SpreadsheetVersion;
|
|
||||||
import org.apache.poi.ss.usermodel.BaseTestRow;
|
import org.apache.poi.ss.usermodel.BaseTestRow;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
@ -44,16 +43,6 @@ public final class TestHSSFRow extends BaseTestRow {
|
||||||
super(HSSFITestDataProvider.instance);
|
super(HSSFITestDataProvider.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testRowBounds() throws IOException {
|
|
||||||
baseTestRowBounds(SpreadsheetVersion.EXCEL97.getLastRowIndex());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testCellBounds() throws IOException {
|
|
||||||
baseTestCellBounds(SpreadsheetVersion.EXCEL97.getLastColumnIndex());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testLastAndFirstColumns_bug46654() throws IOException {
|
public void testLastAndFirstColumns_bug46654() throws IOException {
|
||||||
int ROW_IX = 10;
|
int ROW_IX = 10;
|
||||||
|
|
|
@ -78,11 +78,6 @@ public final class TestHSSFSheet extends BaseTestSheet {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void getSetMargin() throws IOException {
|
|
||||||
baseTestGetSetMargin(new double[]{0.75, 0.75, 1.0, 1.0, 0.3, 0.3});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test the gridset field gets set as expected.
|
* Test the gridset field gets set as expected.
|
||||||
*/
|
*/
|
||||||
|
@ -555,22 +550,29 @@ public final class TestHSSFSheet extends BaseTestSheet {
|
||||||
@Test
|
@Test
|
||||||
public void addEmptyRow() throws IOException {
|
public void addEmptyRow() throws IOException {
|
||||||
//try to add 5 empty rows to a new sheet
|
//try to add 5 empty rows to a new sheet
|
||||||
try (HSSFWorkbook wb = new HSSFWorkbook()) {
|
try (HSSFWorkbook wb1 = new HSSFWorkbook()) {
|
||||||
HSSFSheet sheet = wb.createSheet();
|
HSSFSheet sheet = wb1.createSheet();
|
||||||
for (int i = 0; i < 5; i++) {
|
for (int i = 0; i < 5; i++) {
|
||||||
sheet.createRow(i);
|
sheet.createRow(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
writeOutAndReadBack(wb).close();
|
try (HSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
|
||||||
|
HSSFSheet sheet2 = wb2.getSheetAt(0);
|
||||||
|
assertNotNull(sheet2.getRow(4));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//try adding empty rows in an existing worksheet
|
//try adding empty rows in an existing worksheet
|
||||||
try (HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("Simple.xls")) {
|
try (HSSFWorkbook wb1 = HSSFTestDataSamples.openSampleWorkbook("Simple.xls")) {
|
||||||
|
HSSFSheet sheet = wb1.getSheetAt(0);
|
||||||
|
for (int i = 3; i < 10; i++) {
|
||||||
|
sheet.createRow(i);
|
||||||
|
}
|
||||||
|
|
||||||
HSSFSheet sheet = wb.getSheetAt(0);
|
try (HSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
|
||||||
for (int i = 3; i < 10; i++) sheet.createRow(i);
|
HSSFSheet sheet2 = wb2.getSheetAt(0);
|
||||||
|
assertNotNull(sheet2.getRow(4));
|
||||||
writeOutAndReadBack(wb).close();
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@ package org.apache.poi.hssf.usermodel;
|
||||||
|
|
||||||
import static org.apache.poi.POITestCase.assertContains;
|
import static org.apache.poi.POITestCase.assertContains;
|
||||||
import static org.apache.poi.hssf.HSSFTestDataSamples.openSampleWorkbook;
|
import static org.apache.poi.hssf.HSSFTestDataSamples.openSampleWorkbook;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
|
@ -71,7 +72,6 @@ import org.apache.poi.ss.usermodel.Workbook;
|
||||||
import org.apache.poi.ss.util.CellRangeAddress;
|
import org.apache.poi.ss.util.CellRangeAddress;
|
||||||
import org.apache.poi.util.IOUtils;
|
import org.apache.poi.util.IOUtils;
|
||||||
import org.apache.poi.util.TempFile;
|
import org.apache.poi.util.TempFile;
|
||||||
import org.junit.jupiter.api.Disabled;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.params.ParameterizedTest;
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
import org.junit.jupiter.params.provider.CsvSource;
|
import org.junit.jupiter.params.provider.CsvSource;
|
||||||
|
@ -787,11 +787,6 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
|
||||||
wb.close();
|
wb.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void changeSheetNameWithSharedFormulas() throws IOException {
|
|
||||||
changeSheetNameWithSharedFormulas("shared_formulas.xls");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Should throw exception about invalid POIFSFileSystem
|
// Should throw exception about invalid POIFSFileSystem
|
||||||
@Test
|
@Test
|
||||||
public void emptyDirectoryNode() throws IOException {
|
public void emptyDirectoryNode() throws IOException {
|
||||||
|
@ -863,12 +858,11 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMethods() throws IOException {
|
public void testMethods() throws IOException {
|
||||||
HSSFWorkbook wb=new HSSFWorkbook();
|
try (HSSFWorkbook wb=new HSSFWorkbook()) {
|
||||||
wb.insertChartRecord();
|
assertDoesNotThrow(wb::insertChartRecord);
|
||||||
//wb.dumpDrawingGroupRecords(true);
|
//wb.dumpDrawingGroupRecords(true);
|
||||||
//wb.dumpDrawingGroupRecords(false);
|
//wb.dumpDrawingGroupRecords(false);
|
||||||
|
}
|
||||||
wb.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -1114,14 +1108,12 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setSheetOrderToEnd() throws Exception {
|
public void setSheetOrderToEnd() throws Exception {
|
||||||
final HSSFWorkbook workbook = new HSSFWorkbook();
|
try (HSSFWorkbook workbook = new HSSFWorkbook()) {
|
||||||
workbook.createSheet("A");
|
workbook.createSheet("A");
|
||||||
try {
|
workbook.createSheet("B");
|
||||||
for (int i = 0; i < 2 * workbook.getInternalWorkbook().getRecords().size(); i++) {
|
assertEquals("A", workbook.getSheetName(0));
|
||||||
workbook.setSheetOrder("A", 0);
|
workbook.setSheetOrder("A", 1);
|
||||||
}
|
assertEquals("A", workbook.getSheetName(1));
|
||||||
} catch (Exception e) {
|
|
||||||
throw new Exception("Moving a sheet to the end should not throw an exception, but threw ", e);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1176,26 +1168,22 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWriteToNewFile() throws Exception {
|
public void testWriteToNewFile() throws Exception {
|
||||||
// Open from a Stream
|
|
||||||
HSSFWorkbook wb = new HSSFWorkbook(
|
|
||||||
samples.openResourceAsStream("SampleSS.xls"));
|
|
||||||
|
|
||||||
// Save to a new temp file
|
// Save to a new temp file
|
||||||
final File file = TempFile.createTempFile("TestHSSFWorkbook", ".xls");
|
final File file = TempFile.createTempFile("TestHSSFWorkbook", ".xls");
|
||||||
wb.write(file);
|
|
||||||
wb.close();
|
// Open from a Stream
|
||||||
|
try (HSSFWorkbook wb = new HSSFWorkbook(
|
||||||
|
samples.openResourceAsStream("SampleSS.xls"))) {
|
||||||
|
wb.write(file);
|
||||||
|
}
|
||||||
|
|
||||||
// Read and check
|
// Read and check
|
||||||
wb = new HSSFWorkbook(new POIFSFileSystem(file));
|
try (HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(file))) {
|
||||||
assertEquals(3, wb.getNumberOfSheets());
|
assertEquals(3, wb.getNumberOfSheets());
|
||||||
wb.close();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Disabled
|
|
||||||
@Test
|
|
||||||
@Override
|
|
||||||
public void createDrawing() throws Exception {
|
public void createDrawing() throws Exception {
|
||||||
super.createDrawing();
|
|
||||||
// the dimensions for this image are different than for XSSF and SXSSF
|
// the dimensions for this image are different than for XSSF and SXSSF
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
package org.apache.poi.hssf.usermodel;
|
package org.apache.poi.hssf.usermodel;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
|
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
|
@ -36,9 +37,6 @@ import org.apache.poi.ss.usermodel.CreationHelper;
|
||||||
import org.apache.poi.util.LocaleUtil;
|
import org.apache.poi.util.LocaleUtil;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public final class TestOLE2Embeding {
|
public final class TestOLE2Embeding {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -46,7 +44,7 @@ public final class TestOLE2Embeding {
|
||||||
// This used to break, until bug #43116 was fixed
|
// This used to break, until bug #43116 was fixed
|
||||||
try (HSSFWorkbook workbook = HSSFTestDataSamples.openSampleWorkbook("ole2-embedding.xls")) {
|
try (HSSFWorkbook workbook = HSSFTestDataSamples.openSampleWorkbook("ole2-embedding.xls")) {
|
||||||
// Check we can get at the Escher layer still
|
// Check we can get at the Escher layer still
|
||||||
workbook.getAllPictures();
|
assertDoesNotThrow(workbook::getAllPictures);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,12 +104,6 @@ public final class TestOLE2Embeding {
|
||||||
circle.setShapeType(HSSFSimpleShape.OBJECT_TYPE_OVAL);
|
circle.setShapeType(HSSFSimpleShape.OBJECT_TYPE_OVAL);
|
||||||
circle.setNoFill(true);
|
circle.setNoFill(true);
|
||||||
|
|
||||||
// if (false) {
|
|
||||||
// FileOutputStream fos = new FileOutputStream("embed.xls");
|
|
||||||
// wb.write(fos);
|
|
||||||
// fos.close();
|
|
||||||
// }
|
|
||||||
|
|
||||||
HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1);
|
HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1);
|
||||||
wb1.close();
|
wb1.close();
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,8 @@ import org.junit.jupiter.api.Test;
|
||||||
*/
|
*/
|
||||||
public abstract class BaseTestDataFormat {
|
public abstract class BaseTestDataFormat {
|
||||||
|
|
||||||
|
protected static final String POUND_FMT = "\"\u00a3\"#,##0;[Red]\\-\"\u00a3\"#,##0";
|
||||||
|
|
||||||
private final ITestDataProvider _testDataProvider;
|
private final ITestDataProvider _testDataProvider;
|
||||||
|
|
||||||
protected BaseTestDataFormat(ITestDataProvider testDataProvider) {
|
protected BaseTestDataFormat(ITestDataProvider testDataProvider) {
|
||||||
|
@ -45,66 +47,80 @@ public abstract class BaseTestDataFormat {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public final void testBuiltinFormats() throws IOException {
|
public final void testBuiltinFormats() throws IOException {
|
||||||
Workbook wb = _testDataProvider.createWorkbook();
|
try (Workbook wb = _testDataProvider.createWorkbook()) {
|
||||||
|
|
||||||
DataFormat df = wb.createDataFormat();
|
DataFormat df = wb.createDataFormat();
|
||||||
|
|
||||||
String[] formats = BuiltinFormats.getAll();
|
String[] formats = BuiltinFormats.getAll();
|
||||||
for (int idx = 0; idx < formats.length; idx++) {
|
for (int idx = 0; idx < formats.length; idx++) {
|
||||||
String fmt = formats[idx];
|
String fmt = formats[idx];
|
||||||
assertEquals(idx, df.getFormat(fmt));
|
assertEquals(idx, df.getFormat(fmt));
|
||||||
|
}
|
||||||
|
|
||||||
|
//default format for new cells is General
|
||||||
|
Sheet sheet = wb.createSheet();
|
||||||
|
Cell cell = sheet.createRow(0).createCell(0);
|
||||||
|
assertEquals(0, cell.getCellStyle().getDataFormat());
|
||||||
|
assertEquals("General", cell.getCellStyle().getDataFormatString());
|
||||||
|
|
||||||
|
//create a custom data format
|
||||||
|
String customFmt = "#0.00 AM/PM";
|
||||||
|
//check it is not in built-in formats
|
||||||
|
assertNotBuiltInFormat(customFmt);
|
||||||
|
int customIdx = df.getFormat(customFmt);
|
||||||
|
//The first user-defined format starts at 164.
|
||||||
|
assertTrue(customIdx >= BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX);
|
||||||
|
//read and verify the string representation
|
||||||
|
assertEquals(customFmt, df.getFormat((short) customIdx));
|
||||||
}
|
}
|
||||||
|
|
||||||
//default format for new cells is General
|
|
||||||
Sheet sheet = wb.createSheet();
|
|
||||||
Cell cell = sheet.createRow(0).createCell(0);
|
|
||||||
assertEquals(0, cell.getCellStyle().getDataFormat());
|
|
||||||
assertEquals("General", cell.getCellStyle().getDataFormatString());
|
|
||||||
|
|
||||||
//create a custom data format
|
|
||||||
String customFmt = "#0.00 AM/PM";
|
|
||||||
//check it is not in built-in formats
|
|
||||||
assertNotBuiltInFormat(customFmt);
|
|
||||||
int customIdx = df.getFormat(customFmt);
|
|
||||||
//The first user-defined format starts at 164.
|
|
||||||
assertTrue(customIdx >= BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX);
|
|
||||||
//read and verify the string representation
|
|
||||||
assertEquals(customFmt, df.getFormat((short)customIdx));
|
|
||||||
|
|
||||||
wb.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [Bug 49928] formatCellValue returns incorrect value for \u00a3 formatted cells
|
* [Bug 49928] formatCellValue returns incorrect value for \u00a3 formatted cells
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public abstract void test49928() throws IOException;
|
public void test49928() throws IOException {
|
||||||
protected final static String poundFmt = "\"\u00a3\"#,##0;[Red]\\-\"\u00a3\"#,##0";
|
String fileName = "49928.xls" + (getClass().getName().contains("xssf") ? "x" : "");
|
||||||
public void doTest49928Core(Workbook wb){
|
try (Workbook wb = _testDataProvider.openSampleWorkbook(fileName)) {
|
||||||
DataFormatter df = new DataFormatter();
|
DataFormatter df = new DataFormatter();
|
||||||
|
|
||||||
Sheet sheet = wb.getSheetAt(0);
|
Sheet sheet = wb.getSheetAt(0);
|
||||||
Cell cell = sheet.getRow(0).getCell(0);
|
Cell cell = sheet.getRow(0).getCell(0);
|
||||||
CellStyle style = cell.getCellStyle();
|
CellStyle style = cell.getCellStyle();
|
||||||
|
|
||||||
// not expected normally, id of a custom format should be greater
|
// not expected normally, id of a custom format should be greater
|
||||||
// than BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX
|
// than BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX
|
||||||
short poundFmtIdx = 6;
|
short poundFmtIdx = 6;
|
||||||
|
|
||||||
assertEquals(poundFmt, style.getDataFormatString());
|
assertEquals(POUND_FMT, style.getDataFormatString());
|
||||||
assertEquals(poundFmtIdx, style.getDataFormat());
|
assertEquals(poundFmtIdx, style.getDataFormat());
|
||||||
assertEquals("\u00a31", df.formatCellValue(cell));
|
assertEquals("\u00a31", df.formatCellValue(cell));
|
||||||
|
|
||||||
|
|
||||||
DataFormat dataFormat = wb.createDataFormat();
|
DataFormat dataFormat = wb.createDataFormat();
|
||||||
assertEquals(poundFmtIdx, dataFormat.getFormat(poundFmt));
|
assertEquals(poundFmtIdx, dataFormat.getFormat(POUND_FMT));
|
||||||
assertEquals(poundFmt, dataFormat.getFormat(poundFmtIdx));
|
assertEquals(POUND_FMT, dataFormat.getFormat(poundFmtIdx));
|
||||||
|
|
||||||
|
|
||||||
|
// As of 2015-12-27, there is no way to override a built-in number format with POI XSSFWorkbook
|
||||||
|
// 49928.xlsx has been saved with a poundFmt that overrides the default value (dollar)
|
||||||
|
poundFmtIdx = wb.getSheetAt(0).getRow(0).getCell(0).getCellStyle().getDataFormat();
|
||||||
|
assertEquals(poundFmtIdx, dataFormat.getFormat(POUND_FMT));
|
||||||
|
|
||||||
|
// now create a custom format with Pound (\u00a3)
|
||||||
|
|
||||||
|
String customFmt = "\u00a3##.00[Yellow]";
|
||||||
|
assertNotBuiltInFormat(customFmt);
|
||||||
|
short customFmtIdx = dataFormat.getFormat(customFmt);
|
||||||
|
assertTrue(customFmtIdx >= BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX);
|
||||||
|
assertEquals(customFmt, dataFormat.getFormat(customFmtIdx));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testReadbackFormat() throws IOException {
|
public void testReadbackFormat() throws IOException {
|
||||||
readbackFormat("built-in format", "0.00");
|
readbackFormat("built-in format", "0.00");
|
||||||
readbackFormat("overridden built-in format", poundFmt);
|
readbackFormat("overridden built-in format", POUND_FMT);
|
||||||
|
|
||||||
String customFormat = "#0.00 AM/PM";
|
String customFormat = "#0.00 AM/PM";
|
||||||
assertNotBuiltInFormat(customFormat);
|
assertNotBuiltInFormat(customFormat);
|
||||||
|
@ -120,48 +136,53 @@ public abstract class BaseTestDataFormat {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* [Bug 58532] Handle formats that go numnum, numK, numM etc
|
||||||
|
*/
|
||||||
@Test
|
@Test
|
||||||
public abstract void test58532() throws IOException;
|
public void test58532() throws IOException {
|
||||||
public void doTest58532Core(Workbook wb) {
|
String fileName = "FormatKM.xls" + (getClass().getName().contains("xssf") ? "x" : "");
|
||||||
Sheet s = wb.getSheetAt(0);
|
try (Workbook wb = _testDataProvider.openSampleWorkbook(fileName)) {
|
||||||
DataFormatter fmt = new DataFormatter();
|
Sheet s = wb.getSheetAt(0);
|
||||||
FormulaEvaluator eval = wb.getCreationHelper().createFormulaEvaluator();
|
DataFormatter fmt = new DataFormatter();
|
||||||
|
FormulaEvaluator eval = wb.getCreationHelper().createFormulaEvaluator();
|
||||||
|
|
||||||
// Column A is the raw values
|
// Column A is the raw values
|
||||||
// Column B is the ##/#K/#M values
|
// Column B is the ##/#K/#M values
|
||||||
// Column C is strings of what they should look like
|
// Column C is strings of what they should look like
|
||||||
// Column D is the #.##/#.#K/#.#M values
|
// Column D is the #.##/#.#K/#.#M values
|
||||||
// Column E is strings of what they should look like
|
// Column E is strings of what they should look like
|
||||||
|
|
||||||
String formatKMWhole = "[>999999]#,,\"M\";[>999]#,\"K\";#";
|
String formatKMWhole = "[>999999]#,,\"M\";[>999]#,\"K\";#";
|
||||||
String formatKM3dp = "[>999999]#.000,,\"M\";[>999]#.000,\"K\";#.000";
|
String formatKM3dp = "[>999999]#.000,,\"M\";[>999]#.000,\"K\";#.000";
|
||||||
|
|
||||||
// Check the formats are as expected
|
// Check the formats are as expected
|
||||||
Row headers = s.getRow(0);
|
Row headers = s.getRow(0);
|
||||||
assertNotNull(headers);
|
assertNotNull(headers);
|
||||||
assertEquals(formatKMWhole, headers.getCell(1).getStringCellValue());
|
assertEquals(formatKMWhole, headers.getCell(1).getStringCellValue());
|
||||||
assertEquals(formatKM3dp, headers.getCell(3).getStringCellValue());
|
assertEquals(formatKM3dp, headers.getCell(3).getStringCellValue());
|
||||||
|
|
||||||
Row r2 = s.getRow(1);
|
Row r2 = s.getRow(1);
|
||||||
assertNotNull(r2);
|
assertNotNull(r2);
|
||||||
assertEquals(formatKMWhole, r2.getCell(1).getCellStyle().getDataFormatString());
|
assertEquals(formatKMWhole, r2.getCell(1).getCellStyle().getDataFormatString());
|
||||||
assertEquals(formatKM3dp, r2.getCell(3).getCellStyle().getDataFormatString());
|
assertEquals(formatKM3dp, r2.getCell(3).getCellStyle().getDataFormatString());
|
||||||
|
|
||||||
// For all of the contents rows, check that DataFormatter is able
|
// For all of the contents rows, check that DataFormatter is able
|
||||||
// to format the cells to the same value as the one next to it
|
// to format the cells to the same value as the one next to it
|
||||||
for (int rn=1; rn<s.getLastRowNum(); rn++) {
|
for (int rn = 1; rn < s.getLastRowNum(); rn++) {
|
||||||
Row r = s.getRow(rn);
|
Row r = s.getRow(rn);
|
||||||
if (r == null) break;
|
if (r == null) break;
|
||||||
|
|
||||||
double value = r.getCell(0).getNumericCellValue();
|
double value = r.getCell(0).getNumericCellValue();
|
||||||
|
|
||||||
String expWhole = r.getCell(2).getStringCellValue();
|
String expWhole = r.getCell(2).getStringCellValue();
|
||||||
String exp3dp = r.getCell(4).getStringCellValue();
|
String exp3dp = r.getCell(4).getStringCellValue();
|
||||||
|
|
||||||
assertEquals(expWhole, fmt.formatCellValue(r.getCell(1), eval),
|
assertEquals(expWhole, fmt.formatCellValue(r.getCell(1), eval),
|
||||||
"Wrong formatting of " + value + " for row " + rn);
|
"Wrong formatting of " + value + " for row " + rn);
|
||||||
assertEquals(exp3dp, fmt.formatCellValue(r.getCell(3), eval),
|
assertEquals(exp3dp, fmt.formatCellValue(r.getCell(3), eval),
|
||||||
"Wrong formatting of " + value + " for row " + rn);
|
"Wrong formatting of " + value + " for row " + rn);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -170,36 +191,35 @@ public abstract class BaseTestDataFormat {
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public final void test58536() throws IOException {
|
public final void test58536() throws IOException {
|
||||||
Workbook wb = _testDataProvider.createWorkbook();
|
try (Workbook wb = _testDataProvider.createWorkbook()) {
|
||||||
DataFormatter formatter = new DataFormatter();
|
DataFormatter formatter = new DataFormatter();
|
||||||
DataFormat fmt = wb.createDataFormat();
|
DataFormat fmt = wb.createDataFormat();
|
||||||
Sheet sheet = wb.createSheet();
|
Sheet sheet = wb.createSheet();
|
||||||
Row r = sheet.createRow(0);
|
Row r = sheet.createRow(0);
|
||||||
|
|
||||||
char pound = '\u00A3';
|
char pound = '\u00A3';
|
||||||
String formatUK = "_-[$"+pound+"-809]* #,##0_-;\\-[$"+pound+"-809]* #,##0_-;_-[$"+pound+"-809]* \"-\"??_-;_-@_-";
|
String formatUK = "_-[$" + pound + "-809]* #,##0_-;\\-[$" + pound + "-809]* #,##0_-;_-[$" + pound + "-809]* \"-\"??_-;_-@_-";
|
||||||
|
|
||||||
CellStyle cs = wb.createCellStyle();
|
CellStyle cs = wb.createCellStyle();
|
||||||
cs.setDataFormat(fmt.getFormat(formatUK));
|
cs.setDataFormat(fmt.getFormat(formatUK));
|
||||||
|
|
||||||
Cell pve = r.createCell(0);
|
Cell pve = r.createCell(0);
|
||||||
pve.setCellValue(12345);
|
pve.setCellValue(12345);
|
||||||
pve.setCellStyle(cs);
|
pve.setCellStyle(cs);
|
||||||
|
|
||||||
Cell nve = r.createCell(1);
|
Cell nve = r.createCell(1);
|
||||||
nve.setCellValue(-12345);
|
nve.setCellValue(-12345);
|
||||||
nve.setCellStyle(cs);
|
nve.setCellStyle(cs);
|
||||||
|
|
||||||
Cell zero = r.createCell(2);
|
Cell zero = r.createCell(2);
|
||||||
zero.setCellValue(0);
|
zero.setCellValue(0);
|
||||||
zero.setCellStyle(cs);
|
zero.setCellStyle(cs);
|
||||||
|
|
||||||
assertEquals(pound+" 12,345", formatter.formatCellValue(pve));
|
assertEquals(pound + " 12,345", formatter.formatCellValue(pve));
|
||||||
assertEquals("-"+pound+" 12,345", formatter.formatCellValue(nve));
|
assertEquals("-" + pound + " 12,345", formatter.formatCellValue(nve));
|
||||||
// TODO Fix this to not have an extra 0 at the end
|
// TODO Fix this to not have an extra 0 at the end
|
||||||
//assertEquals(pound+" - ", formatter.formatCellValue(zero));
|
//assertEquals(pound+" - ", formatter.formatCellValue(zero));
|
||||||
|
}
|
||||||
wb.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -208,35 +228,35 @@ public abstract class BaseTestDataFormat {
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public final void test55265() throws IOException {
|
public final void test55265() throws IOException {
|
||||||
Workbook wb = _testDataProvider.createWorkbook();
|
try (Workbook wb = _testDataProvider.createWorkbook()) {
|
||||||
DataFormatter formatter = new DataFormatter();
|
DataFormatter formatter = new DataFormatter();
|
||||||
DataFormat fmt = wb.createDataFormat();
|
DataFormat fmt = wb.createDataFormat();
|
||||||
Sheet sheet = wb.createSheet();
|
Sheet sheet = wb.createSheet();
|
||||||
Row r = sheet.createRow(0);
|
Row r = sheet.createRow(0);
|
||||||
|
|
||||||
CellStyle cs = wb.createCellStyle();
|
CellStyle cs = wb.createCellStyle();
|
||||||
cs.setDataFormat(fmt.getFormat("#'##0"));
|
cs.setDataFormat(fmt.getFormat("#'##0"));
|
||||||
|
|
||||||
Cell zero = r.createCell(0);
|
Cell zero = r.createCell(0);
|
||||||
zero.setCellValue(0);
|
zero.setCellValue(0);
|
||||||
zero.setCellStyle(cs);
|
zero.setCellStyle(cs);
|
||||||
|
|
||||||
Cell sml = r.createCell(1);
|
Cell sml = r.createCell(1);
|
||||||
sml.setCellValue(12);
|
sml.setCellValue(12);
|
||||||
sml.setCellStyle(cs);
|
sml.setCellStyle(cs);
|
||||||
|
|
||||||
Cell med = r.createCell(2);
|
Cell med = r.createCell(2);
|
||||||
med.setCellValue(1234);
|
med.setCellValue(1234);
|
||||||
med.setCellStyle(cs);
|
med.setCellStyle(cs);
|
||||||
|
|
||||||
Cell lge = r.createCell(3);
|
Cell lge = r.createCell(3);
|
||||||
lge.setCellValue(12345678);
|
lge.setCellValue(12345678);
|
||||||
lge.setCellStyle(cs);
|
lge.setCellStyle(cs);
|
||||||
|
|
||||||
assertEquals("0", formatter.formatCellValue(zero));
|
assertEquals("0", formatter.formatCellValue(zero));
|
||||||
assertEquals("12", formatter.formatCellValue(sml));
|
assertEquals("12", formatter.formatCellValue(sml));
|
||||||
assertEquals("1'234", formatter.formatCellValue(med));
|
assertEquals("1'234", formatter.formatCellValue(med));
|
||||||
assertEquals("12'345'678", formatter.formatCellValue(lge));
|
assertEquals("12'345'678", formatter.formatCellValue(lge));
|
||||||
wb.close();
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,8 @@ import java.io.IOException;
|
||||||
|
|
||||||
import org.apache.poi.ss.ITestDataProvider;
|
import org.apache.poi.ss.ITestDataProvider;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
|
import org.junit.jupiter.params.provider.MethodSource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Yegor Kozlov
|
* @author Yegor Kozlov
|
||||||
|
@ -41,113 +43,116 @@ public abstract class BaseTestFont {
|
||||||
_testDataProvider = testDataProvider;
|
_testDataProvider = testDataProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("JUnit5MalformedParameterized")
|
||||||
|
@ParameterizedTest
|
||||||
|
@MethodSource("defaultFont")
|
||||||
protected final void baseTestDefaultFont(String defaultName, short defaultSize, short defaultColor) throws IOException {
|
protected final void baseTestDefaultFont(String defaultName, short defaultSize, short defaultColor) throws IOException {
|
||||||
//get default font and check against default value
|
//get default font and check against default value
|
||||||
Workbook workbook = _testDataProvider.createWorkbook();
|
try (Workbook workbook = _testDataProvider.createWorkbook()) {
|
||||||
Font fontFind=workbook.findFont(false, defaultColor, defaultSize, defaultName, false, false, Font.SS_NONE, Font.U_NONE);
|
Font fontFind = workbook.findFont(false, defaultColor, defaultSize, defaultName, false, false, Font.SS_NONE, Font.U_NONE);
|
||||||
assertNotNull(fontFind);
|
assertNotNull(fontFind);
|
||||||
|
|
||||||
//get default font, then change 2 values and check against different values (height changes)
|
//get default font, then change 2 values and check against different values (height changes)
|
||||||
Font font=workbook.createFont();
|
Font font = workbook.createFont();
|
||||||
font.setBold(true);
|
font.setBold(true);
|
||||||
assertTrue(font.getBold());
|
assertTrue(font.getBold());
|
||||||
font.setUnderline(Font.U_DOUBLE);
|
font.setUnderline(Font.U_DOUBLE);
|
||||||
assertEquals(Font.U_DOUBLE, font.getUnderline());
|
assertEquals(Font.U_DOUBLE, font.getUnderline());
|
||||||
font.setFontHeightInPoints((short)15);
|
font.setFontHeightInPoints((short) 15);
|
||||||
assertEquals(15*20, font.getFontHeight());
|
assertEquals(15 * 20, font.getFontHeight());
|
||||||
assertEquals(15, font.getFontHeightInPoints());
|
assertEquals(15, font.getFontHeightInPoints());
|
||||||
fontFind=workbook.findFont(true, defaultColor, (short)(15*20), defaultName, false, false, Font.SS_NONE, Font.U_DOUBLE);
|
fontFind = workbook.findFont(true, defaultColor, (short) (15 * 20), defaultName, false, false, Font.SS_NONE, Font.U_DOUBLE);
|
||||||
assertNotNull(fontFind);
|
assertNotNull(fontFind);
|
||||||
workbook.close();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public final void testGetNumberOfFonts() throws IOException {
|
public final void testGetNumberOfFonts() throws IOException {
|
||||||
Workbook wb = _testDataProvider.createWorkbook();
|
try (Workbook wb = _testDataProvider.createWorkbook()) {
|
||||||
int num0 = wb.getNumberOfFonts();
|
int num0 = wb.getNumberOfFonts();
|
||||||
|
|
||||||
Font f1=wb.createFont();
|
Font f1 = wb.createFont();
|
||||||
f1.setBold(true);
|
f1.setBold(true);
|
||||||
int idx1 = f1.getIndex();
|
int idx1 = f1.getIndex();
|
||||||
wb.createCellStyle().setFont(f1);
|
wb.createCellStyle().setFont(f1);
|
||||||
|
|
||||||
Font f2=wb.createFont();
|
Font f2 = wb.createFont();
|
||||||
f2.setUnderline(Font.U_DOUBLE);
|
f2.setUnderline(Font.U_DOUBLE);
|
||||||
int idx2 = f2.getIndex();
|
int idx2 = f2.getIndex();
|
||||||
wb.createCellStyle().setFont(f2);
|
wb.createCellStyle().setFont(f2);
|
||||||
|
|
||||||
Font f3=wb.createFont();
|
Font f3 = wb.createFont();
|
||||||
f3.setFontHeightInPoints((short)23);
|
f3.setFontHeightInPoints((short) 23);
|
||||||
int idx3 = f3.getIndex();
|
int idx3 = f3.getIndex();
|
||||||
wb.createCellStyle().setFont(f3);
|
wb.createCellStyle().setFont(f3);
|
||||||
|
|
||||||
assertEquals(num0 + 3,wb.getNumberOfFonts());
|
assertEquals(num0 + 3, wb.getNumberOfFonts());
|
||||||
assertTrue(wb.getFontAt(idx1).getBold());
|
assertTrue(wb.getFontAt(idx1).getBold());
|
||||||
assertEquals(Font.U_DOUBLE,wb.getFontAt(idx2).getUnderline());
|
assertEquals(Font.U_DOUBLE, wb.getFontAt(idx2).getUnderline());
|
||||||
assertEquals(23,wb.getFontAt(idx3).getFontHeightInPoints());
|
assertEquals(23, wb.getFontAt(idx3).getFontHeightInPoints());
|
||||||
wb.close();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests that we can define fonts to a new
|
* Tests that we can define fonts to a new
|
||||||
* file, save, load, and still see them
|
* file, save, load, and still see them
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public final void testCreateSave() throws IOException {
|
public final void testCreateSave() throws IOException {
|
||||||
Workbook wb1 = _testDataProvider.createWorkbook();
|
try (Workbook wb1 = _testDataProvider.createWorkbook()) {
|
||||||
Sheet s1 = wb1.createSheet();
|
Sheet s1 = wb1.createSheet();
|
||||||
Row r1 = s1.createRow(0);
|
Row r1 = s1.createRow(0);
|
||||||
Cell r1c1 = r1.createCell(0);
|
Cell r1c1 = r1.createCell(0);
|
||||||
r1c1.setCellValue(2.2);
|
r1c1.setCellValue(2.2);
|
||||||
|
|
||||||
int num0 = wb1.getNumberOfFonts();
|
int num0 = wb1.getNumberOfFonts();
|
||||||
|
|
||||||
Font font=wb1.createFont();
|
Font font = wb1.createFont();
|
||||||
font.setBold(true);
|
font.setBold(true);
|
||||||
font.setStrikeout(true);
|
font.setStrikeout(true);
|
||||||
font.setColor(IndexedColors.YELLOW.getIndex());
|
font.setColor(IndexedColors.YELLOW.getIndex());
|
||||||
font.setFontName("Courier");
|
font.setFontName("Courier");
|
||||||
int font1Idx = font.getIndex();
|
int font1Idx = font.getIndex();
|
||||||
wb1.createCellStyle().setFont(font);
|
wb1.createCellStyle().setFont(font);
|
||||||
assertEquals(num0 + 1, wb1.getNumberOfFonts());
|
assertEquals(num0 + 1, wb1.getNumberOfFonts());
|
||||||
|
|
||||||
CellStyle cellStyleTitle=wb1.createCellStyle();
|
CellStyle cellStyleTitle = wb1.createCellStyle();
|
||||||
cellStyleTitle.setFont(font);
|
cellStyleTitle.setFont(font);
|
||||||
r1c1.setCellStyle(cellStyleTitle);
|
r1c1.setCellStyle(cellStyleTitle);
|
||||||
|
|
||||||
// Save and re-load
|
// Save and re-load
|
||||||
Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb1);
|
try (Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb1)) {
|
||||||
wb1.close();
|
s1 = wb2.getSheetAt(0);
|
||||||
s1 = wb2.getSheetAt(0);
|
|
||||||
|
|
||||||
assertEquals(num0 + 1, wb2.getNumberOfFonts());
|
assertEquals(num0 + 1, wb2.getNumberOfFonts());
|
||||||
int idx = s1.getRow(0).getCell(0).getCellStyle().getFontIndex();
|
int idx = s1.getRow(0).getCell(0).getCellStyle().getFontIndex();
|
||||||
Font fnt = wb2.getFontAt(idx);
|
Font fnt = wb2.getFontAt(idx);
|
||||||
assertNotNull(fnt);
|
assertNotNull(fnt);
|
||||||
assertEquals(IndexedColors.YELLOW.getIndex(), fnt.getColor());
|
assertEquals(IndexedColors.YELLOW.getIndex(), fnt.getColor());
|
||||||
assertEquals("Courier", fnt.getFontName());
|
assertEquals("Courier", fnt.getFontName());
|
||||||
|
|
||||||
// Now add an orphaned one
|
// Now add an orphaned one
|
||||||
Font font2 = wb2.createFont();
|
Font font2 = wb2.createFont();
|
||||||
font2.setItalic(true);
|
font2.setItalic(true);
|
||||||
font2.setFontHeightInPoints((short)15);
|
font2.setFontHeightInPoints((short) 15);
|
||||||
int font2Idx = font2.getIndex();
|
int font2Idx = font2.getIndex();
|
||||||
wb2.createCellStyle().setFont(font2);
|
wb2.createCellStyle().setFont(font2);
|
||||||
assertEquals(num0 + 2, wb2.getNumberOfFonts());
|
assertEquals(num0 + 2, wb2.getNumberOfFonts());
|
||||||
|
|
||||||
// Save and re-load
|
// Save and re-load
|
||||||
Workbook wb3 = _testDataProvider.writeOutAndReadBack(wb2);
|
try (Workbook wb3 = _testDataProvider.writeOutAndReadBack(wb2)) {
|
||||||
wb2.close();
|
s1 = wb3.getSheetAt(0);
|
||||||
s1 = wb3.getSheetAt(0);
|
assertNotNull(s1);
|
||||||
assertNotNull(s1);
|
|
||||||
|
|
||||||
assertEquals(num0 + 2, wb3.getNumberOfFonts());
|
assertEquals(num0 + 2, wb3.getNumberOfFonts());
|
||||||
assertNotNull(wb3.getFontAt(font1Idx));
|
assertNotNull(wb3.getFontAt(font1Idx));
|
||||||
assertNotNull(wb3.getFontAt(font2Idx));
|
assertNotNull(wb3.getFontAt(font2Idx));
|
||||||
|
|
||||||
assertEquals(15, wb3.getFontAt(font2Idx).getFontHeightInPoints());
|
assertEquals(15, wb3.getFontAt(font2Idx).getFontHeightInPoints());
|
||||||
assertTrue(wb3.getFontAt(font2Idx).getItalic());
|
assertTrue(wb3.getFontAt(font2Idx).getItalic());
|
||||||
wb3.close();
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -155,67 +160,67 @@ public abstract class BaseTestFont {
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public final void test45338() throws IOException {
|
public final void test45338() throws IOException {
|
||||||
Workbook wb = _testDataProvider.createWorkbook();
|
try (Workbook wb = _testDataProvider.createWorkbook()) {
|
||||||
int num0 = wb.getNumberOfFonts();
|
int num0 = wb.getNumberOfFonts();
|
||||||
|
|
||||||
Sheet s = wb.createSheet();
|
Sheet s = wb.createSheet();
|
||||||
s.createRow(0);
|
s.createRow(0);
|
||||||
s.createRow(1);
|
s.createRow(1);
|
||||||
s.getRow(0).createCell(0);
|
s.getRow(0).createCell(0);
|
||||||
s.getRow(1).createCell(0);
|
s.getRow(1).createCell(0);
|
||||||
|
|
||||||
//default font
|
//default font
|
||||||
Font f1 = wb.getFontAt(0);
|
Font f1 = wb.getFontAt(0);
|
||||||
assertFalse(f1.getBold());
|
assertFalse(f1.getBold());
|
||||||
|
|
||||||
// Check that asking for the same font
|
// Check that asking for the same font
|
||||||
// multiple times gives you the same thing.
|
// multiple times gives you the same thing.
|
||||||
// Otherwise, our tests wouldn't work!
|
// Otherwise, our tests wouldn't work!
|
||||||
assertSame(wb.getFontAt(0), wb.getFontAt(0));
|
assertSame(wb.getFontAt(0), wb.getFontAt(0));
|
||||||
|
|
||||||
// Look for a new font we have
|
// Look for a new font we have
|
||||||
// yet to add
|
// yet to add
|
||||||
assertNull(
|
assertNull(
|
||||||
wb.findFont(
|
wb.findFont(
|
||||||
true, (short)123, (short)(22*20),
|
true, (short) 123, (short) (22 * 20),
|
||||||
"Thingy", false, true, (short)2, (byte)2
|
"Thingy", false, true, (short) 2, (byte) 2
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
Font nf = wb.createFont();
|
Font nf = wb.createFont();
|
||||||
int nfIdx = nf.getIndex();
|
int nfIdx = nf.getIndex();
|
||||||
assertEquals(num0 + 1, wb.getNumberOfFonts());
|
assertEquals(num0 + 1, wb.getNumberOfFonts());
|
||||||
|
|
||||||
assertSame(nf, wb.getFontAt(nfIdx));
|
assertSame(nf, wb.getFontAt(nfIdx));
|
||||||
|
|
||||||
nf.setBold(true);
|
nf.setBold(true);
|
||||||
nf.setColor((short)123);
|
nf.setColor((short) 123);
|
||||||
nf.setFontHeightInPoints((short)22);
|
nf.setFontHeightInPoints((short) 22);
|
||||||
nf.setFontName("Thingy");
|
nf.setFontName("Thingy");
|
||||||
nf.setItalic(false);
|
nf.setItalic(false);
|
||||||
nf.setStrikeout(true);
|
nf.setStrikeout(true);
|
||||||
nf.setTypeOffset((short)2);
|
nf.setTypeOffset((short) 2);
|
||||||
nf.setUnderline((byte)2);
|
nf.setUnderline((byte) 2);
|
||||||
|
|
||||||
assertEquals(num0 + 1, wb.getNumberOfFonts());
|
assertEquals(num0 + 1, wb.getNumberOfFonts());
|
||||||
assertEquals(nf, wb.getFontAt(nfIdx));
|
assertEquals(nf, wb.getFontAt(nfIdx));
|
||||||
|
|
||||||
assertEquals(wb.getFontAt(nfIdx), wb.getFontAt(nfIdx));
|
assertEquals(wb.getFontAt(nfIdx), wb.getFontAt(nfIdx));
|
||||||
assertNotSame(wb.getFontAt(0), wb.getFontAt(nfIdx));
|
assertNotSame(wb.getFontAt(0), wb.getFontAt(nfIdx));
|
||||||
|
|
||||||
// Find it now
|
// Find it now
|
||||||
assertNotNull(
|
assertNotNull(
|
||||||
wb.findFont(
|
wb.findFont(
|
||||||
true, (short)123, (short)(22*20),
|
true, (short) 123, (short) (22 * 20),
|
||||||
"Thingy", false, true, (short)2, (byte)2
|
"Thingy", false, true, (short) 2, (byte) 2
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
assertSame(nf,
|
assertSame(nf,
|
||||||
wb.findFont(
|
wb.findFont(
|
||||||
true, (short)123, (short)(22*20),
|
true, (short) 123, (short) (22 * 20),
|
||||||
"Thingy", false, true, (short)2, (byte)2
|
"Thingy", false, true, (short) 2, (byte) 2
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
wb.close();
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,31 +116,32 @@ public abstract class BaseTestFormulaEvaluator {
|
||||||
wb.close();
|
wb.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void baseTestSharedFormulas(String sampleFile) throws IOException {
|
@Test
|
||||||
Workbook wb = _testDataProvider.openSampleWorkbook(sampleFile);
|
public void testSharedFormulas() throws IOException {
|
||||||
|
String fileName = "shared_formulas.xls" + (getClass().getName().contains("xssf") ? "x" : "");
|
||||||
|
try (Workbook wb = _testDataProvider.openSampleWorkbook(fileName)) {
|
||||||
|
|
||||||
Sheet sheet = wb.getSheetAt(0);
|
Sheet sheet = wb.getSheetAt(0);
|
||||||
|
|
||||||
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
|
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
|
||||||
Cell cell;
|
Cell cell;
|
||||||
|
|
||||||
cell = sheet.getRow(1).getCell(0);
|
cell = sheet.getRow(1).getCell(0);
|
||||||
assertEquals("B2", cell.getCellFormula());
|
assertEquals("B2", cell.getCellFormula());
|
||||||
assertEquals("ProductionOrderConfirmation", evaluator.evaluate(cell).getStringValue());
|
assertEquals("ProductionOrderConfirmation", evaluator.evaluate(cell).getStringValue());
|
||||||
|
|
||||||
cell = sheet.getRow(2).getCell(0);
|
cell = sheet.getRow(2).getCell(0);
|
||||||
assertEquals("B3", cell.getCellFormula());
|
assertEquals("B3", cell.getCellFormula());
|
||||||
assertEquals("RequiredAcceptanceDate", evaluator.evaluate(cell).getStringValue());
|
assertEquals("RequiredAcceptanceDate", evaluator.evaluate(cell).getStringValue());
|
||||||
|
|
||||||
cell = sheet.getRow(3).getCell(0);
|
cell = sheet.getRow(3).getCell(0);
|
||||||
assertEquals("B4", cell.getCellFormula());
|
assertEquals("B4", cell.getCellFormula());
|
||||||
assertEquals("Header", evaluator.evaluate(cell).getStringValue());
|
assertEquals("Header", evaluator.evaluate(cell).getStringValue());
|
||||||
|
|
||||||
cell = sheet.getRow(4).getCell(0);
|
cell = sheet.getRow(4).getCell(0);
|
||||||
assertEquals("B5", cell.getCellFormula());
|
assertEquals("B5", cell.getCellFormula());
|
||||||
assertEquals("UniqueDocumentNumberID", evaluator.evaluate(cell).getStringValue());
|
assertEquals("UniqueDocumentNumberID", evaluator.evaluate(cell).getStringValue());
|
||||||
|
}
|
||||||
wb.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -53,32 +53,53 @@ public abstract class BaseTestPicture {
|
||||||
_testDataProvider = testDataProvider;
|
_testDataProvider = testDataProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void baseTestResize(Picture input, Picture compare, double scaleX, double scaleY) {
|
|
||||||
input.resize(scaleX, scaleY);
|
|
||||||
|
|
||||||
ClientAnchor inpCA = input.getClientAnchor();
|
protected abstract Picture getPictureShape(Drawing<?> pat, int picIdx);
|
||||||
ClientAnchor cmpCA = compare.getClientAnchor();
|
|
||||||
|
|
||||||
Dimension inpDim = ImageUtils.getDimensionFromAnchor(input);
|
@Test
|
||||||
Dimension cmpDim = ImageUtils.getDimensionFromAnchor(compare);
|
public void resize() throws IOException {
|
||||||
|
String fileName = "resize_compare.xls" + (getClass().getName().contains("xssf") ? "x" : "");
|
||||||
|
double scaleX = 2;
|
||||||
|
double scaleY = 2;
|
||||||
|
|
||||||
double emuPX = Units.EMU_PER_PIXEL;
|
try (Workbook wb = _testDataProvider.openSampleWorkbook(fileName)) {
|
||||||
|
Sheet sh = wb.getSheetAt(0);
|
||||||
|
Drawing<?> pat = sh.createDrawingPatriarch();
|
||||||
|
|
||||||
assertEquals(inpDim.getHeight(), cmpDim.getHeight(), emuPX*6, "the image height differs");
|
Picture input = getPictureShape(pat, 0);
|
||||||
assertEquals(inpDim.getWidth(), cmpDim.getWidth(), emuPX*6, "the image width differs");
|
Picture compare = getPictureShape(pat, 1);
|
||||||
assertEquals(inpCA.getCol1(), cmpCA.getCol1(), "the starting column differs");
|
|
||||||
assertEquals(inpCA.getDx1(), cmpCA.getDx1(), 1, "the column x-offset differs");
|
|
||||||
assertEquals(inpCA.getDy1(), cmpCA.getDy1(), 1, "the column y-offset differs");
|
|
||||||
assertEquals(inpCA.getCol2(), cmpCA.getCol2(), "the ending columns differs");
|
|
||||||
// can't compare row heights because of variable test heights
|
|
||||||
|
|
||||||
input.resize();
|
input.resize(scaleX, scaleY);
|
||||||
inpDim = ImageUtils.getDimensionFromAnchor(input);
|
|
||||||
|
|
||||||
Dimension imgDim = input.getImageDimension();
|
ClientAnchor inpCA = input.getClientAnchor();
|
||||||
|
ClientAnchor cmpCA = compare.getClientAnchor();
|
||||||
|
|
||||||
assertEquals(imgDim.getHeight(), inpDim.getHeight()/emuPX, 1, "the image height differs");
|
double origDy1 = inpCA.getDy1();
|
||||||
assertEquals(imgDim.getWidth(), inpDim.getWidth()/emuPX, 1, "the image width differs");
|
double origDx1 = inpCA.getDx1();
|
||||||
|
|
||||||
|
Dimension inpDim = ImageUtils.getDimensionFromAnchor(input);
|
||||||
|
Dimension cmpDim = ImageUtils.getDimensionFromAnchor(compare);
|
||||||
|
|
||||||
|
double emuPX = Units.EMU_PER_PIXEL;
|
||||||
|
|
||||||
|
assertEquals(inpDim.getHeight(), cmpDim.getHeight(), emuPX * 6, "the image height differs");
|
||||||
|
assertEquals(inpDim.getWidth(), cmpDim.getWidth(), emuPX * 6, "the image width differs");
|
||||||
|
assertEquals(inpCA.getCol1(), cmpCA.getCol1(), "the starting column differs");
|
||||||
|
assertEquals(inpCA.getDx1(), cmpCA.getDx1(), 1, "the column x-offset differs");
|
||||||
|
assertEquals(inpCA.getDy1(), origDy1, 1, "the column y-offset differs - image has moved");
|
||||||
|
assertEquals(inpCA.getDx1(), origDx1, 1, "the column x-offset differs - image has moved");
|
||||||
|
assertEquals(inpCA.getDy1(), cmpCA.getDy1(), 1, "the column y-offset differs");
|
||||||
|
assertEquals(inpCA.getCol2(), cmpCA.getCol2(), "the ending columns differs");
|
||||||
|
// can't compare row heights because of variable test heights
|
||||||
|
|
||||||
|
input.resize();
|
||||||
|
inpDim = ImageUtils.getDimensionFromAnchor(input);
|
||||||
|
|
||||||
|
Dimension imgDim = input.getImageDimension();
|
||||||
|
|
||||||
|
assertEquals(imgDim.getHeight(), inpDim.getHeight() / emuPX, 1, "the image height differs");
|
||||||
|
assertEquals(imgDim.getWidth(), inpDim.getWidth() / emuPX, 1, "the image width differs");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -144,7 +144,9 @@ public abstract class BaseTestRow {
|
||||||
wb2.close();
|
wb2.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void baseTestRowBounds(int maxRowNum) throws IOException {
|
@Test
|
||||||
|
public void testRowBounds() throws IOException {
|
||||||
|
int maxRowNum = _testDataProvider.getSpreadsheetVersion().getLastRowIndex();
|
||||||
try (Workbook workbook = _testDataProvider.createWorkbook()) {
|
try (Workbook workbook = _testDataProvider.createWorkbook()) {
|
||||||
Sheet sheet = workbook.createSheet();
|
Sheet sheet = workbook.createSheet();
|
||||||
//Test low row bound
|
//Test low row bound
|
||||||
|
@ -161,7 +163,9 @@ public abstract class BaseTestRow {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void baseTestCellBounds(int maxCellNum) throws IOException {
|
@Test
|
||||||
|
protected void testCellBounds() throws IOException {
|
||||||
|
int maxCellNum = _testDataProvider.getSpreadsheetVersion().getLastColumnIndex();
|
||||||
try (Workbook wb1 = _testDataProvider.createWorkbook()) {
|
try (Workbook wb1 = _testDataProvider.createWorkbook()) {
|
||||||
Sheet sheet = wb1.createSheet();
|
Sheet sheet = wb1.createSheet();
|
||||||
|
|
||||||
|
|
|
@ -755,7 +755,12 @@ public abstract class BaseTestSheet {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void baseTestGetSetMargin(double[] defaultMargins) throws IOException {
|
@Test
|
||||||
|
public void testGetSetMargin() throws IOException {
|
||||||
|
double[] defaultMargins = (getClass().getName().contains("xssf"))
|
||||||
|
? new double[]{0.7, 0.7, 0.75, 0.75, 0.3, 0.3}
|
||||||
|
: new double[]{0.75, 0.75, 1.0, 1.0, 0.3, 0.3};
|
||||||
|
|
||||||
double marginLeft = defaultMargins[0];
|
double marginLeft = defaultMargins[0];
|
||||||
double marginRight = defaultMargins[1];
|
double marginRight = defaultMargins[1];
|
||||||
double marginTop = defaultMargins[2];
|
double marginTop = defaultMargins[2];
|
||||||
|
|
|
@ -723,7 +723,10 @@ public abstract class BaseTestWorkbook {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void changeSheetNameWithSharedFormulas(String sampleFile) throws IOException {
|
@Test
|
||||||
|
public void changeSheetNameWithSharedFormulas() throws IOException {
|
||||||
|
String sampleFile = "shared_formulas.xls" + (getClass().getName().contains("xssf") ? "x" : "");
|
||||||
|
|
||||||
try (Workbook wb = _testDataProvider.openSampleWorkbook(sampleFile)) {
|
try (Workbook wb = _testDataProvider.openSampleWorkbook(sampleFile)) {
|
||||||
|
|
||||||
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
|
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue