package org.apache.poi.hssf.usermodel;
+import static org.apache.poi.hssf.HSSFTestDataSamples.writeOutAndReadBack;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
-import java.util.Date;
+import java.util.Calendar;
import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.hssf.model.HSSFFormulaParser;
-import org.apache.poi.ss.util.CellReference;
import org.apache.poi.ss.formula.FormulaType;
import org.apache.poi.ss.formula.ptg.NamePtg;
import org.apache.poi.ss.formula.ptg.Ptg;
import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Name;
import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.util.CellReference;
+import org.apache.poi.util.LocaleUtil;
import org.apache.poi.util.TempFile;
import org.junit.Test;
*/
@Test
public void testBasicAddIntegers() throws IOException {
+ try (HSSFWorkbook wb1 = new HSSFWorkbook()) {
+ HSSFSheet s = wb1.createSheet();
- HSSFWorkbook wb1 = new HSSFWorkbook();
- HSSFSheet s = wb1.createSheet();
- HSSFRow r;
- HSSFCell c;
+ //get our minimum values
+ HSSFRow r = s.createRow(1);
+ HSSFCell c = r.createCell(1);
+ c.setCellFormula(1 + "+" + 1);
- //get our minimum values
- r = s.createRow(1);
- c = r.createCell(1);
- c.setCellFormula(1 + "+" + 1);
+ try (HSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+ s = wb2.getSheetAt(0);
+ r = s.getRow(1);
+ c = r.getCell(1);
- HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1);
- wb1.close();
- s = wb2.getSheetAt(0);
- r = s.getRow(1);
- c = r.getCell(1);
-
- assertEquals("Formula is as expected", "1+1", c.getCellFormula());
- wb2.close();
+ assertEquals("Formula is as expected", "1+1", c.getCellFormula());
+ }
+ }
}
/**
}
private static void floatTest(String operator) throws IOException {
- HSSFWorkbook wb1 = new HSSFWorkbook();
- HSSFSheet s = wb1.createSheet();
- HSSFRow r;
- HSSFCell c;
-
- //get our minimum values
-
- r = s.createRow(0);
- c = r.createCell(1);
- c.setCellFormula(""+Float.MIN_VALUE + operator + Float.MIN_VALUE);
-
- for (int x = 1; x < Short.MAX_VALUE && x > 0; x=(short)(x*2) ) {
- r = s.createRow(x);
+ try (HSSFWorkbook wb1 = new HSSFWorkbook()) {
+ HSSFSheet s = wb1.createSheet();
- for (int y = 1; y < 256 && y > 0; y= (short) (y +2)) {
-
- c = r.createCell(y);
- c.setCellFormula("" + x+"."+y + operator + y +"."+x);
+ //get our minimum values
+ HSSFRow r = s.createRow(0);
+ HSSFCell c = r.createCell(1);
+ c.setCellFormula("" + Float.MIN_VALUE + operator + Float.MIN_VALUE);
+ for (int x = 1; x < Short.MAX_VALUE && x > 0; x = (short) (x * 2)) {
+ r = s.createRow(x);
+ for (int y = 1; y < 256 && y > 0; y = (short) (y + 2)) {
+ c = r.createCell(y);
+ c.setCellFormula("" + x + "." + y + operator + y + "." + x);
+ }
+ }
+ if (s.getLastRowNum() < Short.MAX_VALUE) {
+ r = s.createRow(0);
+ c = r.createCell(0);
+ c.setCellFormula("" + Float.MAX_VALUE + operator + Float.MAX_VALUE);
+ }
+ try (HSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+ floatVerify(operator, wb2);
}
}
- if (s.getLastRowNum() < Short.MAX_VALUE) {
- r = s.createRow(0);
- c = r.createCell(0);
- c.setCellFormula("" + Float.MAX_VALUE + operator + Float.MAX_VALUE);
- }
- HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1);
- wb1.close();
-
- floatVerify(operator, wb2);
- wb2.close();
}
private static void floatVerify(String operator, HSSFWorkbook wb) {
-
- HSSFSheet s = wb.getSheetAt(0);
+ HSSFSheet s = wb.getSheetAt(0);
// don't know how to check correct result .. for the moment, we just verify that the file can be read.
-
for (int x = 1; x < Short.MAX_VALUE && x > 0; x=(short)(x*2)) {
HSSFRow r = s.getRow(x);
}
private static void operationRefTest(String operator) throws IOException {
- HSSFWorkbook wb1 = new HSSFWorkbook();
- HSSFSheet s = wb1.createSheet();
- HSSFRow r;
- HSSFCell c;
-
- //get our minimum values
- r = s.createRow(0);
- c = r.createCell(1);
- c.setCellFormula("A2" + operator + "A3");
-
- for (int x = 1; x < Short.MAX_VALUE && x > 0; x=(short)(x*2)) {
- r = s.createRow(x);
-
- for (int y = 1; y < 256 && y > 0; y++) {
-
- String ref;
- String ref2;
- short refx1;
- short refy1;
- short refx2;
- short refy2;
- if (x +50 < Short.MAX_VALUE) {
- refx1=(short)(x+50);
- refx2=(short)(x+46);
- } else {
- refx1=(short)(x-4);
- refx2=(short)(x-3);
+ try (HSSFWorkbook wb1 = new HSSFWorkbook()) {
+ HSSFSheet s = wb1.createSheet();
+
+ //get our minimum values
+ HSSFRow r = s.createRow(0);
+ HSSFCell c = r.createCell(1);
+ c.setCellFormula("A2" + operator + "A3");
+
+ for (int x = 1; x < Short.MAX_VALUE && x > 0; x = (short) (x * 2)) {
+ r = s.createRow(x);
+
+ for (int y = 1; y < 256 && y > 0; y++) {
+ short refx1 = (short)(x + (x + 50 < Short.MAX_VALUE ? 50 : -4));
+ short refx2 = (short)(x + (x + 50 < Short.MAX_VALUE ? 46 : -3));
+ short refy1 = (short)(y + (y + 50 < 255 ? 50 : -4));
+ short refy2 = (short)(y + (y + 50 < 255 ? 49 : -3));
+
+ CellReference cr = new CellReference(refx1, refy1, false, false);
+ String ref = cr.formatAsString();
+ cr = new CellReference(refx2, refy2, false, false);
+ String ref2 = cr.formatAsString();
+
+ c = r.createCell(y);
+ c.setCellFormula("" + ref + operator + ref2);
}
+ }
- if (y+50 < 255) {
- refy1=(short)(y+50);
- refy2=(short)(y+49);
- } else {
- refy1=(short)(y-4);
- refy2=(short)(y-3);
- }
-
- c = r.getCell(y);
- CellReference cr= new CellReference(refx1,refy1, false, false);
- ref=cr.formatAsString();
- cr=new CellReference(refx2,refy2, false, false);
- ref2=cr.formatAsString();
-
- c = r.createCell(y);
- c.setCellFormula("" + ref + operator + ref2);
-
-
-
+ //make sure we do the maximum value of the Int operator
+ if (s.getLastRowNum() < Short.MAX_VALUE) {
+ r = s.getRow(0);
+ c = r.createCell(0);
+ c.setCellFormula("" + "B1" + operator + "IV255");
}
- }
- //make sure we do the maximum value of the Int operator
- if (s.getLastRowNum() < Short.MAX_VALUE) {
- r = s.getRow(0);
- c = r.createCell(0);
- c.setCellFormula("" + "B1" + operator + "IV255");
+ try (HSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+ operationalRefVerify(operator, wb2);
+ }
}
-
- HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1);
- wb1.close();
- operationalRefVerify(operator, wb2);
- wb2.close();
}
/**
*/
private static void operationalRefVerify(String operator, HSSFWorkbook wb) {
- HSSFSheet s = wb.getSheetAt(0);
- HSSFRow r;
- HSSFCell c;
+ HSSFSheet s = wb.getSheetAt(0);
//get our minimum values
- r = s.getRow(0);
- c = r.getCell(1);
+ HSSFRow r = s.getRow(0);
+ HSSFCell c = r.getCell(1);
//get our minimum values
assertEquals("minval Formula is as expected A2" + operator + "A3 != " + c.getCellFormula(), ("A2" + operator + "A3"), c.getCellFormula());
for (int y = 1; y < 256 && y > 0; y++) {
- int refx1;
- int refy1;
- int refx2;
- int refy2;
- if (x +50 < Short.MAX_VALUE) {
- refx1=x+50;
- refx2=x+46;
- } else {
- refx1=x-4;
- refx2=x-3;
- }
-
- if (y+50 < 255) {
- refy1=y+50;
- refy2=y+49;
- } else {
- refy1=y-4;
- refy2=y-3;
- }
+ int refx1 = x + (x+50 < Short.MAX_VALUE ? 50 : -4);
+ int refx2 = x + (x+50 < Short.MAX_VALUE ? 46 : -3);
+ int refy1 = y + (y+50 < 255 ? 50 : -4);
+ int refy2 = y + (y+50 < 255 ? 49 : -3);
c = r.getCell(y);
CellReference cr= new CellReference(refx1, refy1, false, false);
String ref=cr.formatAsString();
- ref=cr.formatAsString();
cr=new CellReference(refx2,refy2, false, false);
String ref2=cr.formatAsString();
* tests order wrting out == order writing in for a given formula
*/
private static void orderTest(String formula) throws IOException {
- HSSFWorkbook wb1 = new HSSFWorkbook();
- HSSFSheet s = wb1.createSheet();
- HSSFRow r;
- HSSFCell c;
+ try (HSSFWorkbook wb1 = new HSSFWorkbook()) {
+ HSSFSheet s = wb1.createSheet();
- //get our minimum values
- r = s.createRow(0);
- c = r.createCell(1);
- c.setCellFormula(formula);
+ //get our minimum values
+ HSSFRow r = s.createRow(0);
+ HSSFCell c = r.createCell(1);
+ c.setCellFormula(formula);
- HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1);
- wb1.close();
- s = wb2.getSheetAt(0);
+ try (HSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+ s = wb2.getSheetAt(0);
- //get our minimum values
- r = s.getRow(0);
- c = r.getCell(1);
- assertEquals("minval Formula is as expected", formula, c.getCellFormula());
- wb2.close();
+ //get our minimum values
+ r = s.getRow(0);
+ c = r.getCell(1);
+ assertEquals("minval Formula is as expected", formula, c.getCellFormula());
+ }
+ }
}
/**
* that they are all how we expect.
*/
private static void binomialOperator(String operator) throws IOException {
- HSSFWorkbook wb1 = new HSSFWorkbook();
- HSSFSheet s = wb1.createSheet();
- HSSFRow r;
- HSSFCell c;
-
- //get our minimum values
- r = s.createRow(0);
- c = r.createCell(1);
- c.setCellFormula(1 + operator + 1);
-
- for (int x = 1; x < Short.MAX_VALUE && x > 0; x=(short)(x*2)) {
- r = s.createRow(x);
+ try (HSSFWorkbook wb1 = new HSSFWorkbook()) {
+ HSSFSheet s = wb1.createSheet();
- for (int y = 1; y < 256 && y > 0; y++) {
+ //get our minimum values
+ HSSFRow r = s.createRow(0);
+ HSSFCell c = r.createCell(1);
+ c.setCellFormula(1 + operator + 1);
- c = r.createCell(y);
- c.setCellFormula("" + x + operator + y);
+ for (int x = 1; x < Short.MAX_VALUE && x > 0; x = (short) (x * 2)) {
+ r = s.createRow(x);
+ for (int y = 1; y < 256 && y > 0; y++) {
+ c = r.createCell(y);
+ c.setCellFormula("" + x + operator + y);
+ }
}
- }
- //make sure we do the maximum value of the Int operator
- if (s.getLastRowNum() < Short.MAX_VALUE) {
- r = s.getRow(0);
- c = r.createCell(0);
- c.setCellFormula("" + Short.MAX_VALUE + operator + Short.MAX_VALUE);
+ //make sure we do the maximum value of the Int operator
+ if (s.getLastRowNum() < Short.MAX_VALUE) {
+ r = s.getRow(0);
+ c = r.createCell(0);
+ c.setCellFormula("" + Short.MAX_VALUE + operator + Short.MAX_VALUE);
+ }
+ try (HSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+ binomialVerify(operator, wb2);
+ }
}
- HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1);
- wb1.close();
- binomialVerify(operator, wb2);
- wb2.close();
}
/**
* all match what we expect (x operator y)
*/
private static void binomialVerify(String operator, HSSFWorkbook wb) {
- HSSFSheet s = wb.getSheetAt(0);
- HSSFRow r;
- HSSFCell c;
+ HSSFSheet s = wb.getSheetAt(0);
//get our minimum values
- r = s.getRow(0);
- c = r.getCell(1);
+ HSSFRow r = s.getRow(0);
+ HSSFCell c = r.getCell(1);
assertEquals("minval Formula is as expected 1" + operator + "1 != " + c.getCellFormula(), ("1" + operator + "1"), c.getCellFormula());
for (int x = 1; x < Short.MAX_VALUE && x > 0; x=(short)(x*2)) {
r = s.getRow(x);
for (int y = 1; y < 256 && y > 0; y++) {
-
c = r.getCell(y);
-
assertEquals("loop Formula is as expected " + x + operator + y + "!=" + c.getCellFormula(), ("" + x + operator + y), c.getCellFormula());
}
}
* Writes a function then tests to see if its correct
*/
public static void areaFunctionTest(String function) throws IOException {
-
- HSSFWorkbook wb1 = new HSSFWorkbook();
- HSSFSheet s = wb1.createSheet();
- HSSFRow r;
- HSSFCell c;
-
-
- r = s.createRow(0);
-
- c = r.createCell(0);
- c.setCellFormula(function+"(A2:A3)");
-
- HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1);
- wb1.close();
- s = wb2.getSheetAt(0);
- r = s.getRow(0);
- c = r.getCell(0);
-
- assertEquals("function =" + function + "(A2:A3)", (function + "(A2:A3)"), (function + "(A2:A3)"));
- wb2.close();
+ try (HSSFWorkbook wb1 = new HSSFWorkbook()) {
+ HSSFSheet s = wb1.createSheet();
+ HSSFRow r = s.createRow(0);
+ HSSFCell c = r.createCell(0);
+ c.setCellFormula(function + "(A2:A3)");
+
+ try (HSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+ s = wb2.getSheetAt(0);
+ r = s.getRow(0);
+ c = r.getCell(0);
+
+ assertEquals("function =" + function + "(A2:A3)", function + "(A2:A3)", c.getCellFormula());
+ }
+ }
}
/**
* Writes a function then tests to see if its correct
*/
public void refArrayFunctionTest(String function) throws IOException {
+ try (HSSFWorkbook wb1 = new HSSFWorkbook()) {
+ HSSFSheet s = wb1.createSheet();
+ HSSFRow r = s.createRow(0);
- HSSFWorkbook wb1 = new HSSFWorkbook();
- HSSFSheet s = wb1.createSheet();
- HSSFRow r;
- HSSFCell c;
+ HSSFCell c = r.createCell(0);
+ c.setCellFormula(function + "(A2,A3)");
+ try (HSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+ s = wb2.getSheetAt(0);
+ r = s.getRow(0);
+ c = r.getCell(0);
- r = s.createRow(0);
-
- c = r.createCell(0);
- c.setCellFormula(function+"(A2,A3)");
-
- HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1);
- wb1.close();
- s = wb2.getSheetAt(0);
- r = s.getRow(0);
- c = r.getCell(0);
-
- assertEquals("function =" + function + "(A2,A3)", (function + "(A2,A3)"), c.getCellFormula());
- wb2.close();
+ assertEquals("function =" + function + "(A2,A3)", (function + "(A2,A3)"), c.getCellFormula());
+ }
+ }
}
*/
public void refAreaArrayFunctionTest(String function) throws IOException {
- HSSFWorkbook wb1 = new HSSFWorkbook();
- HSSFSheet s = wb1.createSheet();
- HSSFRow r;
- HSSFCell c;
-
-
- r = s.createRow(0);
+ try (HSSFWorkbook wb1 = new HSSFWorkbook()) {
+ HSSFSheet s = wb1.createSheet();
+ HSSFRow r = s.createRow(0);
+ HSSFCell c = r.createCell(0);
+ c.setCellFormula(function + "(A2:A4,B2:B4)");
+ c = r.createCell(1);
+ c.setCellFormula(function + "($A$2:$A4,B$2:B4)");
- c = r.createCell(0);
- c.setCellFormula(function+"(A2:A4,B2:B4)");
- c=r.createCell(1);
- c.setCellFormula(function+"($A$2:$A4,B$2:B4)");
+ try (HSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+ s = wb2.getSheetAt(0);
+ r = s.getRow(0);
+ c = r.getCell(0);
- HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1);
- wb1.close();
- s = wb2.getSheetAt(0);
- r = s.getRow(0);
- c = r.getCell(0);
-
- assertEquals("function =" + function + "(A2:A4,B2:B4)", (function + "(A2:A4,B2:B4)"), c.getCellFormula());
+ assertEquals("function =" + function + "(A2:A4,B2:B4)", (function + "(A2:A4,B2:B4)"), c.getCellFormula());
- c=r.getCell(1);
- assertEquals("function =" + function + "($A$2:$A4,B$2:B4)", (function + "($A$2:$A4,B$2:B4)"), c.getCellFormula());
- wb2.close();
+ c = r.getCell(1);
+ assertEquals("function =" + function + "($A$2:$A4,B$2:B4)", (function + "($A$2:$A4,B$2:B4)"), c.getCellFormula());
+ }
+ }
}
@Test
public void testAbsRefs() throws IOException {
- HSSFWorkbook wb1 = new HSSFWorkbook();
- HSSFSheet s = wb1.createSheet();
- HSSFRow r;
- HSSFCell c;
-
- r = s.createRow(0);
- c = r.createCell(0);
- c.setCellFormula("A3+A2");
- c=r.createCell(1);
- c.setCellFormula("$A3+$A2");
- c=r.createCell(2);
- c.setCellFormula("A$3+A$2");
- c=r.createCell(3);
- c.setCellFormula("$A$3+$A$2");
- c=r.createCell(4);
- c.setCellFormula("SUM($A$3,$A$2)");
-
- HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1);
- wb1.close();
- s = wb2.getSheetAt(0);
- r = s.getRow(0);
- c = r.getCell(0);
- assertEquals("A3+A2", ("A3+A2"), c.getCellFormula());
- c = r.getCell(1);
- assertEquals("$A3+$A2", ("$A3+$A2"), c.getCellFormula());
- c = r.getCell(2);
- assertEquals("A$3+A$2", ("A$3+A$2"), c.getCellFormula());
- c = r.getCell(3);
- assertEquals("$A$3+$A$2", ("$A$3+$A$2"), c.getCellFormula());
- c = r.getCell(4);
- assertEquals("SUM($A$3,$A$2)", ("SUM($A$3,$A$2)"), c.getCellFormula());
- wb2.close();
+ try (HSSFWorkbook wb1 = new HSSFWorkbook()) {
+ HSSFSheet s = wb1.createSheet();
+ HSSFRow r = s.createRow(0);
+ HSSFCell c = r.createCell(0);
+ c.setCellFormula("A3+A2");
+ c = r.createCell(1);
+ c.setCellFormula("$A3+$A2");
+ c = r.createCell(2);
+ c.setCellFormula("A$3+A$2");
+ c = r.createCell(3);
+ c.setCellFormula("$A$3+$A$2");
+ c = r.createCell(4);
+ c.setCellFormula("SUM($A$3,$A$2)");
+
+ try (HSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+ s = wb2.getSheetAt(0);
+ r = s.getRow(0);
+ c = r.getCell(0);
+ assertEquals("A3+A2", ("A3+A2"), c.getCellFormula());
+ c = r.getCell(1);
+ assertEquals("$A3+$A2", ("$A3+$A2"), c.getCellFormula());
+ c = r.getCell(2);
+ assertEquals("A$3+A$2", ("A$3+A$2"), c.getCellFormula());
+ c = r.getCell(3);
+ assertEquals("$A$3+$A$2", ("$A$3+$A$2"), c.getCellFormula());
+ c = r.getCell(4);
+ assertEquals("SUM($A$3,$A$2)", ("SUM($A$3,$A$2)"), c.getCellFormula());
+ }
+ }
}
@Test
public void testSheetFunctions() throws IOException {
- HSSFWorkbook wb1 = new HSSFWorkbook();
- HSSFSheet s = wb1.createSheet("A");
- HSSFRow r;
- HSSFCell c;
- r = s.createRow(0);
- c = r.createCell(0);c.setCellValue(1);
- c = r.createCell(1);c.setCellValue(2);
-
- s = wb1.createSheet("B");
- r = s.createRow(0);
- c=r.createCell(0); c.setCellFormula("AVERAGE(A!A1:B1)");
- c=r.createCell(1); c.setCellFormula("A!A1+A!B1");
- c=r.createCell(2); c.setCellFormula("A!$A$1+A!$B1");
-
- HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1);
- wb1.close();
-
- s = wb2.getSheet("B");
- r = s.getRow(0);
- c = r.getCell(0);
- assertEquals("expected: AVERAGE(A!A1:B1) got: " + c.getCellFormula(), ("AVERAGE(A!A1:B1)"), c.getCellFormula());
- c = r.getCell(1);
- assertEquals("expected: A!A1+A!B1 got: " + c.getCellFormula(), ("A!A1+A!B1"), c.getCellFormula());
- wb2.close();
+ try (HSSFWorkbook wb1 = new HSSFWorkbook()) {
+ HSSFSheet s = wb1.createSheet("A");
+ HSSFRow r = s.createRow(0);
+ HSSFCell c = r.createCell(0);
+ c.setCellValue(1);
+ c = r.createCell(1);
+ c.setCellValue(2);
+
+ s = wb1.createSheet("B");
+ r = s.createRow(0);
+ c = r.createCell(0);
+ c.setCellFormula("AVERAGE(A!A1:B1)");
+ c = r.createCell(1);
+ c.setCellFormula("A!A1+A!B1");
+ c = r.createCell(2);
+ c.setCellFormula("A!$A$1+A!$B1");
+
+ try (HSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+ s = wb2.getSheet("B");
+ r = s.getRow(0);
+ c = r.getCell(0);
+ assertEquals("expected: AVERAGE(A!A1:B1) got: " + c.getCellFormula(), ("AVERAGE(A!A1:B1)"), c.getCellFormula());
+ c = r.getCell(1);
+ assertEquals("expected: A!A1+A!B1 got: " + c.getCellFormula(), ("A!A1+A!B1"), c.getCellFormula());
+ }
+ }
}
@Test
public void testRVAoperands() throws IOException {
File file = TempFile.createTempFile("testFormulaRVA",".xls");
- FileOutputStream out = new FileOutputStream(file);
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet s = wb.createSheet();
- HSSFRow r;
- HSSFCell c;
-
-
- r = s.createRow(0);
-
- c = r.createCell(0);
- c.setCellFormula("A3+A2");
- c=r.createCell(1);
- c.setCellFormula("AVERAGE(A3,A2)");
- c=r.createCell(2);
- c.setCellFormula("ROW(A3)");
- c=r.createCell(3);
- c.setCellFormula("AVERAGE(A2:A3)");
- c=r.createCell(4);
- c.setCellFormula("POWER(A2,A3)");
- c=r.createCell(5);
- c.setCellFormula("SIN(A2)");
-
- c=r.createCell(6);
- c.setCellFormula("SUM(A2:A3)");
-
- c=r.createCell(7);
- c.setCellFormula("SUM(A2,A3)");
-
- r = s.createRow(1);c=r.createCell(0); c.setCellValue(2.0);
- r = s.createRow(2);c=r.createCell(0); c.setCellValue(3.0);
+ try (HSSFWorkbook wb = new HSSFWorkbook()) {
+ HSSFSheet s = wb.createSheet();
+ HSSFRow r = s.createRow(0);
+ HSSFCell c = r.createCell(0);
+ c.setCellFormula("A3+A2");
+ c = r.createCell(1);
+ c.setCellFormula("AVERAGE(A3,A2)");
+ c = r.createCell(2);
+ c.setCellFormula("ROW(A3)");
+ c = r.createCell(3);
+ c.setCellFormula("AVERAGE(A2:A3)");
+ c = r.createCell(4);
+ c.setCellFormula("POWER(A2,A3)");
+ c = r.createCell(5);
+ c.setCellFormula("SIN(A2)");
+
+ c = r.createCell(6);
+ c.setCellFormula("SUM(A2:A3)");
+
+ c = r.createCell(7);
+ c.setCellFormula("SUM(A2,A3)");
+
+ r = s.createRow(1);
+ c = r.createCell(0);
+ c.setCellValue(2.0);
+ r = s.createRow(2);
+ c = r.createCell(0);
+ c.setCellValue(3.0);
- wb.write(out);
- out.close();
- assertTrue("file exists",file.exists());
- wb.close();
+ try (FileOutputStream out = new FileOutputStream(file)) {
+ wb.write(out);
+ }
+ assertTrue("file exists", file.exists());
+ }
}
@Test
public void testStringFormulas() throws IOException {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet s = wb.createSheet("A");
- HSSFRow r;
- HSSFCell c;
- r = s.createRow(0);
- c=r.createCell(1); c.setCellFormula("UPPER(\"abc\")");
- c=r.createCell(2); c.setCellFormula("LOWER(\"ABC\")");
- c=r.createCell(3); c.setCellFormula("CONCATENATE(\" my \",\" name \")");
-
- HSSFTestDataSamples.writeOutAndReadBack(wb).close();
- wb.close();
-
- wb = openSample("StringFormulas.xls");
- s = wb.getSheetAt(0);
- r = s.getRow(0);
- c = r.getCell(0);
- assertEquals("UPPER(\"xyz\")", c.getCellFormula());
- wb.close();
+ try (HSSFWorkbook wb = new HSSFWorkbook()) {
+ HSSFSheet s = wb.createSheet("A");
+ HSSFRow r = s.createRow(0);
+ HSSFCell c = r.createCell(1);
+ c.setCellFormula("UPPER(\"abc\")");
+ c = r.createCell(2);
+ c.setCellFormula("LOWER(\"ABC\")");
+ c = r.createCell(3);
+ c.setCellFormula("CONCATENATE(\" my \",\" name \")");
+
+ writeOutAndReadBack(wb).close();
+ }
+
+ try (HSSFWorkbook wb = openSample("StringFormulas.xls")) {
+ HSSFSheet s = wb.getSheetAt(0);
+ HSSFRow r = s.getRow(0);
+ HSSFCell c = r.getCell(0);
+ assertEquals("UPPER(\"xyz\")", c.getCellFormula());
+ }
}
@Test
public void testLogicalFormulas() throws IOException {
-
- HSSFWorkbook wb1 = new HSSFWorkbook();
- HSSFSheet s = wb1.createSheet("A");
- HSSFRow r;
- HSSFCell c;
- r = s.createRow(0);
- c=r.createCell(1); c.setCellFormula("IF(A1<A2,B1,B2)");
-
- HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1);
- wb1.close();
- s = wb2.getSheetAt(0);
- r = s.getRow(0);
- c = r.getCell(1);
- assertEquals("Formula in cell 1 ","IF(A1<A2,B1,B2)",c.getCellFormula());
- wb2.close();
+ try (HSSFWorkbook wb1 = new HSSFWorkbook()) {
+ HSSFSheet s = wb1.createSheet("A");
+ HSSFRow r = s.createRow(0);
+ HSSFCell c = r.createCell(1);
+ c.setCellFormula("IF(A1<A2,B1,B2)");
+
+ try (HSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+ s = wb2.getSheetAt(0);
+ r = s.getRow(0);
+ c = r.getCell(1);
+ assertEquals("Formula in cell 1 ", "IF(A1<A2,B1,B2)", c.getCellFormula());
+ }
+ }
}
@Test
public void testDateFormulas() throws IOException {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet s = wb.createSheet("testSheet1");
- HSSFRow r;
- HSSFCell c;
-
- r = s.createRow(0 );
- c = r.createCell(0 );
-
- HSSFCellStyle cellStyle = wb.createCellStyle();
- cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
- c.setCellValue(new Date());
- c.setCellStyle(cellStyle);
-
- // assertEquals("Checking hour = " + hour, date.getTime().getTime(),
- // DateUtil.getJavaDate(excelDate).getTime());
+ try (HSSFWorkbook wb = new HSSFWorkbook()) {
+ HSSFSheet s = wb.createSheet("testSheet1");
+ HSSFRow r = s.createRow(0);
+ HSSFCell c = r.createCell(0);
+
+ Calendar cal = LocaleUtil.getLocaleCalendar();
+
+ HSSFCellStyle cellStyle = wb.createCellStyle();
+ cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
+ c.setCellValue(cal.getTime());
+ c.setCellStyle(cellStyle);
+
+ int hour = cal.get(Calendar.HOUR_OF_DAY);
+ double excelDate = c.getNumericCellValue();
+ assertEquals(cal.getTime().getTime(), DateUtil.getJavaDate(excelDate).getTime());
+ assertEquals(cal.getTime(), c.getDateCellValue());
+
+ for (int k = 1; k < 100; k++) {
+ r = s.createRow(k);
+ c = r.createCell(0);
+ c.setCellFormula("A" + (k) + "+1");
+ c.setCellStyle(cellStyle);
+ }
- for (int k=1; k < 100; k++) {
- r=s.createRow(k);
- c=r.createCell(0);
- c.setCellFormula("A"+(k)+"+1");
- c.setCellStyle(cellStyle);
+ writeOutAndReadBack(wb).close();
}
-
- HSSFTestDataSamples.writeOutAndReadBack(wb).close();
- wb.close();
}
@Test
public void testIfFormulas() throws IOException {
- HSSFWorkbook wb1 = new HSSFWorkbook();
- HSSFSheet s = wb1.createSheet("testSheet1");
- HSSFRow r;
- HSSFCell c;
- r = s.createRow(0);
- c=r.createCell(1); c.setCellValue(1);
- c=r.createCell(2); c.setCellValue(2);
- c=r.createCell(3); c.setCellFormula("MAX(A1:B1)");
- c=r.createCell(4); c.setCellFormula("IF(A1=D1,\"A1\",\"B1\")");
-
- HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1);
- wb1.close();
- s = wb2.getSheetAt(0);
- r = s.getRow(0);
- c = r.getCell(4);
-
- assertEquals("expected: IF(A1=D1,\"A1\",\"B1\") got " + c.getCellFormula(), ("IF(A1=D1,\"A1\",\"B1\")"), c.getCellFormula());
- wb2.close();
+ try (HSSFWorkbook wb1 = new HSSFWorkbook()) {
+ HSSFSheet s = wb1.createSheet("testSheet1");
+ HSSFRow r = s.createRow(0);
+ HSSFCell c = r.createCell(1);
+ c.setCellValue(1);
+ c = r.createCell(2);
+ c.setCellValue(2);
+ c = r.createCell(3);
+ c.setCellFormula("MAX(A1:B1)");
+ c = r.createCell(4);
+ c.setCellFormula("IF(A1=D1,\"A1\",\"B1\")");
+
+ try (HSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+ s = wb2.getSheetAt(0);
+ r = s.getRow(0);
+ c = r.getCell(4);
+
+ assertEquals("expected: IF(A1=D1,\"A1\",\"B1\") got " + c.getCellFormula(), ("IF(A1=D1,\"A1\",\"B1\")"), c.getCellFormula());
+ }
+ }
- wb1 = openSample("IfFormulaTest.xls");
- s = wb1.getSheetAt(0);
- r = s.getRow(3);
- c = r.getCell(0);
- assertEquals("expected: IF(A3=A1,\"A1\",\"A2\") got " + c.getCellFormula(), ("IF(A3=A1,\"A1\",\"A2\")"), c.getCellFormula());
- //c = r.getCell((short)1);
- //assertTrue("expected: A!A1+A!B1 got: "+c.getCellFormula(), ("A!A1+A!B1").equals(c.getCellFormula()));
- wb1.close();
+ try (HSSFWorkbook wb1 = openSample("IfFormulaTest.xls")) {
+ HSSFSheet s = wb1.getSheetAt(0);
+ HSSFRow r = s.getRow(3);
+ HSSFCell c = r.getCell(0);
+ assertEquals("expected: IF(A3=A1,\"A1\",\"A2\") got " + c.getCellFormula(), ("IF(A3=A1,\"A1\",\"A2\")"), c.getCellFormula());
+ //c = r.getCell((short)1);
+ //assertTrue("expected: A!A1+A!B1 got: "+c.getCellFormula(), ("A!A1+A!B1").equals(c.getCellFormula()));
+ }
- wb1 = new HSSFWorkbook();
- s = wb1.createSheet("testSheet1");
- r = null;
- c = null;
- r = s.createRow(0);
- c=r.createCell(0); c.setCellFormula("IF(1=1,0,1)");
+ try (HSSFWorkbook wb1 = new HSSFWorkbook()) {
+ HSSFSheet s = wb1.createSheet("testSheet1");
+ HSSFRow r = s.createRow(0);
+ HSSFCell c = r.createCell(0);
+ c.setCellFormula("IF(1=1,0,1)");
- HSSFTestDataSamples.writeOutAndReadBack(wb1).close();
- wb1.close();
+ writeOutAndReadBack(wb1).close();
+ }
- wb1 = new HSSFWorkbook();
- s = wb1.createSheet("testSheet1");
- r = null;
- c = null;
- r = s.createRow(0);
- c=r.createCell(0);
- c.setCellValue(1);
+ try (HSSFWorkbook wb1 = new HSSFWorkbook()) {
+ HSSFSheet s = wb1.createSheet("testSheet1");
+ HSSFRow r = s.createRow(0);
+ HSSFCell c = r.createCell(0);
+ c.setCellValue(1);
- c=r.createCell(1);
- c.setCellValue(3);
+ c = r.createCell(1);
+ c.setCellValue(3);
- HSSFCell formulaCell=r.createCell(3);
+ HSSFCell formulaCell = r.createCell(3);
- r = s.createRow(1);
- c=r.createCell(0);
- c.setCellValue(3);
+ r = s.createRow(1);
+ c = r.createCell(0);
+ c.setCellValue(3);
- c=r.createCell(1);
- c.setCellValue(7);
+ c = r.createCell(1);
+ c.setCellValue(7);
- formulaCell.setCellFormula("IF(A1=B1,AVERAGE(A1:B1),AVERAGE(A2:B2))");
+ formulaCell.setCellFormula("IF(A1=B1,AVERAGE(A1:B1),AVERAGE(A2:B2))");
- HSSFTestDataSamples.writeOutAndReadBack(wb1).close();
- wb1.close();
+ writeOutAndReadBack(wb1).close();
+ }
}
@Test
public void testSumIf() throws IOException {
String function ="SUMIF(A1:A5,\">4000\",B1:B5)";
- HSSFWorkbook wb = openSample("sumifformula.xls");
-
- HSSFSheet s = wb.getSheetAt(0);
- HSSFRow r = s.getRow(0);
- HSSFCell c = r.getCell(2);
- assertEquals(function, c.getCellFormula());
-
-
- wb = new HSSFWorkbook();
- s = wb.createSheet();
+ try (HSSFWorkbook wb = openSample("sumifformula.xls")) {
+ HSSFSheet s = wb.getSheetAt(0);
+ HSSFRow r = s.getRow(0);
+ HSSFCell c = r.getCell(2);
+ assertEquals(function, c.getCellFormula());
+ }
- r = s.createRow(0);
- c=r.createCell(0); c.setCellValue(1000);
- c=r.createCell(1); c.setCellValue(1);
+ try (HSSFWorkbook wb = new HSSFWorkbook()) {
+ HSSFSheet s = wb.createSheet();
+ HSSFRow r = s.createRow(0);
+ HSSFCell c = r.createCell(0);
+ c.setCellValue(1000);
+ c = r.createCell(1);
+ c.setCellValue(1);
- r = s.createRow(1);
- c=r.createCell(0); c.setCellValue(2000);
- c=r.createCell(1); c.setCellValue(2);
+ r = s.createRow(1);
+ c = r.createCell(0);
+ c.setCellValue(2000);
+ c = r.createCell(1);
+ c.setCellValue(2);
- r = s.createRow(2);
- c=r.createCell(0); c.setCellValue(3000);
- c=r.createCell(1); c.setCellValue(3);
+ r = s.createRow(2);
+ c = r.createCell(0);
+ c.setCellValue(3000);
+ c = r.createCell(1);
+ c.setCellValue(3);
- r = s.createRow(3);
- c=r.createCell(0); c.setCellValue(4000);
- c=r.createCell(1); c.setCellValue(4);
+ r = s.createRow(3);
+ c = r.createCell(0);
+ c.setCellValue(4000);
+ c = r.createCell(1);
+ c.setCellValue(4);
- r = s.createRow(4);
- c=r.createCell(0); c.setCellValue(5000);
- c=r.createCell(1); c.setCellValue(5);
+ r = s.createRow(4);
+ c = r.createCell(0);
+ c.setCellValue(5000);
+ c = r.createCell(1);
+ c.setCellValue(5);
- r = s.getRow(0);
- c=r.createCell(2); c.setCellFormula(function);
+ r = s.getRow(0);
+ c = r.createCell(2);
+ c.setCellFormula(function);
- HSSFTestDataSamples.writeOutAndReadBack(wb).close();
- wb.close();
+ writeOutAndReadBack(wb).close();
+ }
}
@Test
public void testSquareMacro() throws IOException {
- HSSFWorkbook w = openSample("SquareMacro.xls");
-
- HSSFSheet s0 = w.getSheetAt(0);
- HSSFRow[] r = {s0.getRow(0), s0.getRow(1)};
+ try (HSSFWorkbook w = openSample("SquareMacro.xls")) {
+ HSSFSheet s0 = w.getSheetAt(0);
+ HSSFRow[] r = {s0.getRow(0), s0.getRow(1)};
- HSSFCell a1 = r[0].getCell(0);
- assertEquals("square(1)", a1.getCellFormula());
- assertEquals(1d, a1.getNumericCellValue(), 1e-9);
+ HSSFCell a1 = r[0].getCell(0);
+ assertEquals("square(1)", a1.getCellFormula());
+ assertEquals(1d, a1.getNumericCellValue(), 1e-9);
- HSSFCell a2 = r[1].getCell(0);
- assertEquals("square(2)", a2.getCellFormula());
- assertEquals(4d, a2.getNumericCellValue(), 1e-9);
+ HSSFCell a2 = r[1].getCell(0);
+ assertEquals("square(2)", a2.getCellFormula());
+ assertEquals(4d, a2.getNumericCellValue(), 1e-9);
- HSSFCell b1 = r[0].getCell(1);
- assertEquals("IF(TRUE,square(1))", b1.getCellFormula());
- assertEquals(1d, b1.getNumericCellValue(), 1e-9);
+ HSSFCell b1 = r[0].getCell(1);
+ assertEquals("IF(TRUE,square(1))", b1.getCellFormula());
+ assertEquals(1d, b1.getNumericCellValue(), 1e-9);
- HSSFCell b2 = r[1].getCell(1);
- assertEquals("IF(TRUE,square(2))", b2.getCellFormula());
- assertEquals(4d, b2.getNumericCellValue(), 1e-9);
+ HSSFCell b2 = r[1].getCell(1);
+ assertEquals("IF(TRUE,square(2))", b2.getCellFormula());
+ assertEquals(4d, b2.getNumericCellValue(), 1e-9);
- HSSFCell c1 = r[0].getCell(2);
- assertEquals("square(square(1))", c1.getCellFormula());
- assertEquals(1d, c1.getNumericCellValue(), 1e-9);
+ HSSFCell c1 = r[0].getCell(2);
+ assertEquals("square(square(1))", c1.getCellFormula());
+ assertEquals(1d, c1.getNumericCellValue(), 1e-9);
- HSSFCell c2 = r[1].getCell(2);
- assertEquals("square(square(2))", c2.getCellFormula());
- assertEquals(16d, c2.getNumericCellValue(), 1e-9);
+ HSSFCell c2 = r[1].getCell(2);
+ assertEquals("square(square(2))", c2.getCellFormula());
+ assertEquals(16d, c2.getNumericCellValue(), 1e-9);
- HSSFCell d1 = r[0].getCell(3);
- assertEquals("square(one())", d1.getCellFormula());
- assertEquals(1d, d1.getNumericCellValue(), 1e-9);
+ HSSFCell d1 = r[0].getCell(3);
+ assertEquals("square(one())", d1.getCellFormula());
+ assertEquals(1d, d1.getNumericCellValue(), 1e-9);
- HSSFCell d2 = r[1].getCell(3);
- assertEquals("square(two())", d2.getCellFormula());
- assertEquals(4d, d2.getNumericCellValue(), 1e-9);
-
- w.close();
+ HSSFCell d2 = r[1].getCell(3);
+ assertEquals("square(two())", d2.getCellFormula());
+ assertEquals(4d, d2.getNumericCellValue(), 1e-9);
+ }
}
@Test
public void testStringFormulaRead() throws IOException {
- HSSFWorkbook w = openSample("StringFormulas.xls");
- HSSFCell c = w.getSheetAt(0).getRow(0).getCell(0);
- assertEquals("String Cell value","XYZ",c.getRichStringCellValue().getString());
- w.close();
+ try (HSSFWorkbook w = openSample("StringFormulas.xls")) {
+ HSSFCell c = w.getSheetAt(0).getRow(0).getCell(0);
+ assertEquals("String Cell value", "XYZ", c.getRichStringCellValue().getString());
+ }
}
/** test for bug 34021*/
@Test
- public void testComplexSheetRefs () throws IOException {
- try (HSSFWorkbook sb = new HSSFWorkbook()) {
- HSSFSheet s1 = sb.createSheet("Sheet a.1");
- HSSFSheet s2 = sb.createSheet("Sheet.A");
+ public void testComplexSheetRefs() throws IOException {
+ try (HSSFWorkbook wb1 = new HSSFWorkbook()) {
+ HSSFSheet s1 = wb1.createSheet("Sheet a.1");
+ HSSFSheet s2 = wb1.createSheet("Sheet.A");
s2.createRow(1).createCell(2).setCellFormula("'Sheet a.1'!A1");
s1.createRow(1).createCell(2).setCellFormula("'Sheet.A'!A1");
- File file = TempFile.createTempFile("testComplexSheetRefs", ".xls");
- try (FileOutputStream stream = new FileOutputStream(file)) {
- sb.write(stream);
+
+ try (HSSFWorkbook wb2 = writeOutAndReadBack(wb1)) {
+ s1 = wb2.getSheet("Sheet a.1");
+ assertNotNull(s1);
+ assertEquals("Sheet.A!A1", s1.getRow(1).getCell(2).getCellFormula());
+ s2 = wb2.getSheet("Sheet.A");
+ assertNotNull(s2);
+ assertEquals("'Sheet a.1'!A1", s2.getRow(1).getCell(2).getCellFormula());
}
}
}
/** Unknown Ptg 3C*/
@Test
public void test27272_1() throws IOException {
- HSSFWorkbook wb = openSample("27272_1.xls");
- wb.getSheetAt(0);
- assertEquals("Reference for named range ", "Compliance!#REF!",wb.getNameAt(0).getRefersToFormula());
- File outF = TempFile.createTempFile("bug27272_1",".xls");
- try (FileOutputStream stream = new FileOutputStream(outF)) {
- wb.write(stream);
+ try (HSSFWorkbook wb = openSample("27272_1.xls")) {
+ wb.getSheetAt(0);
+ assertEquals("Reference for named range ", "Compliance!#REF!", wb.getNameAt(0).getRefersToFormula());
+ writeOutAndReadBack(wb).close();
}
- wb.close();
}
/** Unknown Ptg 3D*/
@Test
public void test27272_2() throws IOException {
- HSSFWorkbook wb = openSample("27272_2.xls");
- assertEquals("Reference for named range ", "LOAD.POD_HISTORIES!#REF!",wb.getNameAt(0).getRefersToFormula());
- File outF = TempFile.createTempFile("bug27272_2",".xls");
- try (FileOutputStream stream = new FileOutputStream(outF)) {
- wb.write(stream);
+ try (HSSFWorkbook wb = openSample("27272_2.xls")) {
+ assertEquals("Reference for named range ", "LOAD.POD_HISTORIES!#REF!", wb.getNameAt(0).getRefersToFormula());
+ writeOutAndReadBack(wb).close();
}
- wb.close();
}
/** MissingArgPtg */
@Test
public void testSharedFormula() throws IOException {
- HSSFWorkbook wb = openSample("SharedFormulaTest.xls");
-
- assertEquals("A$1*2", wb.getSheetAt(0).getRow(1).getCell(1).toString());
- assertEquals("$A11*2", wb.getSheetAt(0).getRow(11).getCell(1).toString());
- assertEquals("DZ2*2", wb.getSheetAt(0).getRow(1).getCell(128).toString());
- assertEquals("B32770*2", wb.getSheetAt(0).getRow(32768).getCell(1).toString());
- wb.close();
+ try (HSSFWorkbook wb = openSample("SharedFormulaTest.xls")) {
+ assertEquals("A$1*2", wb.getSheetAt(0).getRow(1).getCell(1).toString());
+ assertEquals("$A11*2", wb.getSheetAt(0).getRow(11).getCell(1).toString());
+ assertEquals("DZ2*2", wb.getSheetAt(0).getRow(1).getCell(128).toString());
+ assertEquals("B32770*2", wb.getSheetAt(0).getRow(32768).getCell(1).toString());
+ }
}
/**
*/
@Test
public void testSheetLevelFormulas() throws IOException {
- HSSFWorkbook wb = new HSSFWorkbook();
-
- HSSFRow row;
- HSSFSheet sh1 = wb.createSheet("Sheet1");
- HSSFName nm1 = wb.createName();
- nm1.setNameName("sales_1");
- nm1.setSheetIndex(0);
- nm1.setRefersToFormula("Sheet1!$A$1");
- row = sh1.createRow(0);
- row.createCell(0).setCellValue(3);
- row.createCell(1).setCellFormula("sales_1");
- row.createCell(2).setCellFormula("sales_1*2");
-
-
- HSSFSheet sh2 = wb.createSheet("Sheet2");
- HSSFName nm2 = wb.createName();
- nm2.setNameName("sales_1");
- nm2.setSheetIndex(1);
- nm2.setRefersToFormula("Sheet2!$A$1");
-
- row = sh2.createRow(0);
- row.createCell(0).setCellValue(5);
- row.createCell(1).setCellFormula("sales_1");
- row.createCell(2).setCellFormula("sales_1*3");
-
- //check that NamePtg refers to the correct NameRecord
- Ptg[] ptgs1 = HSSFFormulaParser.parse("sales_1", wb, FormulaType.CELL, 0);
- NamePtg nPtg1 = (NamePtg)ptgs1[0];
- assertSame(nm1, wb.getNameAt(nPtg1.getIndex()));
-
- Ptg[] ptgs2 = HSSFFormulaParser.parse("sales_1", wb, FormulaType.CELL, 1);
- NamePtg nPtg2 = (NamePtg)ptgs2[0];
- assertSame(nm2, wb.getNameAt(nPtg2.getIndex()));
-
- //check that the formula evaluator returns the correct result
- HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(wb);
- assertEquals(3.0, evaluator.evaluate(sh1.getRow(0).getCell(1)).getNumberValue(), 0.0);
- assertEquals(6.0, evaluator.evaluate(sh1.getRow(0).getCell(2)).getNumberValue(), 0.0);
-
- assertEquals(5.0, evaluator.evaluate(sh2.getRow(0).getCell(1)).getNumberValue(), 0.0);
- assertEquals(15.0, evaluator.evaluate(sh2.getRow(0).getCell(2)).getNumberValue(), 0.0);
- wb.close();
+ try (HSSFWorkbook wb = new HSSFWorkbook()) {
+ HSSFSheet sh1 = wb.createSheet("Sheet1");
+ HSSFName nm1 = wb.createName();
+ nm1.setNameName("sales_1");
+ nm1.setSheetIndex(0);
+ nm1.setRefersToFormula("Sheet1!$A$1");
+ HSSFRow row = sh1.createRow(0);
+ row.createCell(0).setCellValue(3);
+ row.createCell(1).setCellFormula("sales_1");
+ row.createCell(2).setCellFormula("sales_1*2");
+
+
+ HSSFSheet sh2 = wb.createSheet("Sheet2");
+ HSSFName nm2 = wb.createName();
+ nm2.setNameName("sales_1");
+ nm2.setSheetIndex(1);
+ nm2.setRefersToFormula("Sheet2!$A$1");
+
+ row = sh2.createRow(0);
+ row.createCell(0).setCellValue(5);
+ row.createCell(1).setCellFormula("sales_1");
+ row.createCell(2).setCellFormula("sales_1*3");
+
+ //check that NamePtg refers to the correct NameRecord
+ Ptg[] ptgs1 = HSSFFormulaParser.parse("sales_1", wb, FormulaType.CELL, 0);
+ NamePtg nPtg1 = (NamePtg) ptgs1[0];
+ assertSame(nm1, wb.getNameAt(nPtg1.getIndex()));
+
+ Ptg[] ptgs2 = HSSFFormulaParser.parse("sales_1", wb, FormulaType.CELL, 1);
+ NamePtg nPtg2 = (NamePtg) ptgs2[0];
+ assertSame(nm2, wb.getNameAt(nPtg2.getIndex()));
+
+ //check that the formula evaluator returns the correct result
+ HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(wb);
+ assertEquals(3.0, evaluator.evaluate(sh1.getRow(0).getCell(1)).getNumberValue(), 0.0);
+ assertEquals(6.0, evaluator.evaluate(sh1.getRow(0).getCell(2)).getNumberValue(), 0.0);
+
+ assertEquals(5.0, evaluator.evaluate(sh2.getRow(0).getCell(1)).getNumberValue(), 0.0);
+ assertEquals(15.0, evaluator.evaluate(sh2.getRow(0).getCell(2)).getNumberValue(), 0.0);
+ }
}
/**