* @param outputFilename A String that encapsulates the name of and path to\r
* the Excel spreadsheet file this code will create.\r
*/\r
- public void demonstrateMethodCalls(String outputFilename) {\r
+ public void demonstrateMethodCalls(String outputFilename) throws IOException {\r
HSSFWorkbook workbook = null;\r
HSSFSheet sheet = null;\r
HSSFRow row = null;\r
FileOutputStream fos = null;\r
ArrayList<MultiLevelListItem> multiLevelListItems = null;\r
ArrayList<String> listItems = null;\r
- String listItem = null;\r
try {\r
workbook = new HSSFWorkbook();\r
sheet = workbook.createSheet("In Cell Lists");\r
ioEx.printStackTrace(System.out);\r
}\r
finally {\r
- if(fos != null) {\r
- try {\r
- fos.close();\r
- }\r
- catch(IOException ioEx) {\r
-\r
- }\r
+ if (workbook != null) {\r
+ workbook.close();\r
+ }\r
+ if (fos != null) {\r
+ fos.close();\r
}\r
}\r
}\r
*\r
* @param args the command line arguments.\r
*/\r
- public static void main(String[] args) {\r
- new InCellLists().demonstrateMethodCalls("C:/temp/Latest In Cell List.xls");\r
+ public static void main(String[] args) throws IOException {\r
+ new InCellLists().demonstrateMethodCalls("Latest In Cell List.xls");\r
}\r
\r
/**\r
package org.apache.poi.hssf.usermodel.examples;
-import org.apache.poi.hssf.usermodel.HSSFSheet;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.hssf.usermodel.HSSFRow;
-import org.apache.poi.hssf.usermodel.HSSFCell;
-
+import java.io.Closeable;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+
+import org.apache.poi.hssf.usermodel.HSSFCell;
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.util.POILogFactory;
+import org.apache.poi.util.POILogger;
/**
* Creates outlines.
- *
- * @author Glen Stampoultzis (glens at apache.org)
*/
-public class Outlines {
- public static void main(String[] args) throws IOException {
- createCase1( "outline1.xls" );
- System.out.println( "outline1.xls written. Two expanded groups." );
- createCase2( "outline2.xls" );
- System.out.println( "outline2.xls written. Two groups. Inner group collapsed." );
- createCase3( "outline3.xls" );
- System.out.println( "outline3.xls written. Two groups. Both collapsed." );
- createCase4( "outline4.xls" );
- System.out.println( "outline4.xls written. Two groups. Collapsed then inner group expanded." );
- createCase5( "outline5.xls" );
- System.out.println( "outline5.xls written. Two groups. Collapsed then reexpanded." );
- createCase6( "outline6.xls" );
- System.out.println( "outline6.xls written. Two groups with matching end points. Second group collapsed." );
- createCase7( "outline7.xls" );
- System.out.println( "outline7.xls written. Row outlines." );
- createCase8( "outline8.xls" );
- System.out.println( "outline8.xls written. Row outlines. Inner group collapsed." );
- createCase9( "outline9.xls" );
- System.out.println( "outline9.xls written. Row outlines. Both collapsed." );
- createCase10( "outline10.xls" );
- System.out.println( "outline10.xls written. Row outlines. Collapsed then inner group expanded." );
- createCase11( "outline11.xls" );
- System.out.println( "outline11.xls written. Row outlines. Collapsed then expanded." );
- createCase12( "outline12.xls" );
- System.out.println( "outline12.xls written. Row outlines. Two row groups with matching end points. Second group collapsed." );
- createCase13( "outline13.xls" );
- System.out.println( "outline13.xls written. Mixed bag." );
+public class Outlines implements Closeable {
+ public static void main(String[] args)
+ throws IOException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
+ POILogger LOGGER = POILogFactory.getLogger(Outlines.class);
+ for (int i=1; i<=13; i++) {
+ Outlines o = new Outlines();
+ try {
+ String log = (String)Outlines.class.getDeclaredMethod("test"+i).invoke(o);
+ String filename = "outline"+i+".xls";
+ o.writeOut(filename);
+ LOGGER.log(POILogger.INFO, filename+" written. "+log);
+ } finally {
+ o.close();
+ }
+ }
}
- private static void createCase1(String filename) throws IOException {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sheet1 = wb.createSheet("new sheet");
+ private final HSSFWorkbook wb = new HSSFWorkbook();
+ private final HSSFSheet sheet1 = wb.createSheet("new sheet");
+
+ public void writeOut(String filename) throws IOException {
+ FileOutputStream fileOut = new FileOutputStream(filename);
+ try {
+ wb.write(fileOut);
+ } finally {
+ fileOut.close();
+ }
+ }
+
+ public void close() throws IOException {
+ wb.close();
+ }
+ public String test1() {
sheet1.groupColumn(4, 7);
for (int row = 0; row < 200; row++) {
c.setCellValue(column);
}
}
-
- FileOutputStream fileOut = new FileOutputStream(filename);
- wb.write(fileOut);
- fileOut.close();
+ return "Two expanded groups.";
}
- private static void createCase2(String filename) throws IOException {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sheet1 = wb.createSheet("new sheet");
-
+ public String test2() {
sheet1.groupColumn(2, 10);
sheet1.groupColumn(4, 7);
sheet1.setColumnGroupCollapsed(4, true);
-
- FileOutputStream fileOut = new FileOutputStream(filename);
- wb.write(fileOut);
- fileOut.close();
+ return "Two groups. Inner group collapsed.";
}
- private static void createCase3(String filename) throws IOException {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sheet1 = wb.createSheet("new sheet");
-
+ public String test3() {
sheet1.groupColumn(2, 10);
sheet1.groupColumn(4, 7);
sheet1.setColumnGroupCollapsed(4, true);
sheet1.setColumnGroupCollapsed(2, true);
-
- FileOutputStream fileOut = new FileOutputStream(filename);
- wb.write(fileOut);
- fileOut.close();
+ return "Two groups. Both collapsed.";
}
- private static void createCase4(String filename) throws IOException {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sheet1 = wb.createSheet("new sheet");
-
+ public String test4() {
sheet1.groupColumn(2, 10);
sheet1.groupColumn(4, 7);
sheet1.setColumnGroupCollapsed(4, true);
sheet1.setColumnGroupCollapsed(2, true);
sheet1.setColumnGroupCollapsed(4, false);
-
- FileOutputStream fileOut = new FileOutputStream(filename);
- wb.write(fileOut);
- fileOut.close();
+ return "Two groups. Collapsed then inner group expanded.";
}
- private static void createCase5(String filename) throws IOException {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sheet1 = wb.createSheet("new sheet");
-
+ public String test5() {
sheet1.groupColumn(2, 10);
sheet1.groupColumn(4, 7);
sheet1.setColumnGroupCollapsed(4, true);
sheet1.setColumnGroupCollapsed(4, false);
sheet1.setColumnGroupCollapsed(3, false);
-
- FileOutputStream fileOut = new FileOutputStream(filename);
- wb.write(fileOut);
- fileOut.close();
+ return "Two groups. Collapsed then reexpanded.";
}
- private static void createCase6(String filename) throws IOException {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sheet1 = wb.createSheet("new sheet");
-
+ public String test6() {
sheet1.groupColumn(2, 10);
sheet1.groupColumn(4, 10);
sheet1.setColumnGroupCollapsed(4, true);
sheet1.setColumnGroupCollapsed(2, true);
sheet1.setColumnGroupCollapsed(3, false);
-
- FileOutputStream fileOut = new FileOutputStream(filename);
- wb.write(fileOut);
- fileOut.close();
+ return "Two groups with matching end points. Second group collapsed.";
}
- private static void createCase7(String filename) throws IOException {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sheet1 = wb.createSheet("new sheet");
-
+ public String test7() {
sheet1.groupRow(5, 14);
sheet1.groupRow(7, 10);
-
- FileOutputStream fileOut = new FileOutputStream(filename);
- wb.write(fileOut);
- fileOut.close();
+ return "Row outlines.";
}
- private static void createCase8(String filename) throws IOException {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sheet1 = wb.createSheet("new sheet");
-
+ public String test8() {
sheet1.groupRow(5, 14);
sheet1.groupRow(7, 10);
sheet1.setRowGroupCollapsed(7, true);
-
- FileOutputStream fileOut = new FileOutputStream(filename);
- wb.write(fileOut);
- fileOut.close();
+ return "Row outlines. Inner group collapsed.";
}
- private static void createCase9(String filename) throws IOException {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sheet1 = wb.createSheet("new sheet");
-
+ public String test9() {
sheet1.groupRow(5, 14);
sheet1.groupRow(7, 10);
sheet1.setRowGroupCollapsed(7, true);
sheet1.setRowGroupCollapsed(5, true);
-
- FileOutputStream fileOut = new FileOutputStream(filename);
- wb.write(fileOut);
- fileOut.close();
+ return "Row outlines. Both collapsed.";
}
- private static void createCase10(String filename) throws IOException {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sheet1 = wb.createSheet("new sheet");
-
+ public String test10() {
sheet1.groupRow(5, 14);
sheet1.groupRow(7, 10);
sheet1.setRowGroupCollapsed(7, true);
sheet1.setRowGroupCollapsed(5, true);
sheet1.setRowGroupCollapsed(8, false);
-
- FileOutputStream fileOut = new FileOutputStream(filename);
- wb.write(fileOut);
- fileOut.close();
+ return "Row outlines. Collapsed then inner group expanded.";
}
- private static void createCase11(String filename) throws IOException {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sheet1 = wb.createSheet("new sheet");
-
+ public String test11() {
sheet1.groupRow(5, 14);
sheet1.groupRow(7, 10);
sheet1.setRowGroupCollapsed(7, true);
sheet1.setRowGroupCollapsed(5, true);
sheet1.setRowGroupCollapsed(8, false);
sheet1.setRowGroupCollapsed(14, false);
-
- FileOutputStream fileOut = new FileOutputStream(filename);
- wb.write(fileOut);
- fileOut.close();
+ return "Row outlines. Collapsed then expanded.";
}
- private static void createCase12(String filename) throws IOException {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sheet1 = wb.createSheet("new sheet");
-
+ public String test12() {
sheet1.groupRow(5, 14);
sheet1.groupRow(7, 14);
sheet1.setRowGroupCollapsed(7, true);
sheet1.setRowGroupCollapsed(5, true);
sheet1.setRowGroupCollapsed(6, false);
-
- FileOutputStream fileOut = new FileOutputStream(filename);
- wb.write(fileOut);
- fileOut.close();
+ return "Row outlines. Two row groups with matching end points. Second group collapsed.";
}
- private static void createCase13(String filename) throws IOException {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sheet1 = wb.createSheet("new sheet");
-
+ public String test13() {
sheet1.groupRow(5, 14);
sheet1.groupRow(7, 14);
sheet1.groupRow(16, 19);
sheet1.groupColumn(4, 7);
sheet1.groupColumn(9, 12);
sheet1.groupColumn(10, 11);
-
- FileOutputStream fileOut = new FileOutputStream(filename);
- wb.write(fileOut);
- fileOut.close();
+ return "Mixed bag.";
}
}
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
}
- public static void main(String[] args)
- {
- try
- {
- OutputStream out = new FileOutputStream("c:\\test.xml");
-
- new Word2Forrest(new HWPFDocument(new FileInputStream(args[0])), out);
- out.close();
- }
- catch (Exception t)
- {
- t.printStackTrace();
+ public static void main(String[] args) throws IOException {
+ InputStream is = new FileInputStream(args[0]);
+ OutputStream out = new FileOutputStream("test.xml");
+ try {
+ new Word2Forrest(new HWPFDocument(is), out);
+ } finally {
+ out.close();
+ is.close();
+ }
}
-
- }
}
package org.apache.poi.xssf.streaming.examples;
import java.io.FileOutputStream;
+import java.io.IOException;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
public class Outlining {
- public static void main(String[] args) throws Exception {
+ public static void main(String[] args) throws IOException {
Outlining o = new Outlining();
o.collapseRow();
}
- private void collapseRow() throws Exception {
+ private void collapseRow() throws IOException {
SXSSFWorkbook wb2 = new SXSSFWorkbook(100);
- SXSSFSheet sheet2 = (SXSSFSheet) wb2.createSheet("new sheet");
+ SXSSFSheet sheet2 = wb2.createSheet("new sheet");
int rowCount = 20;
for (int i = 0; i < rowCount; i++) {
sheet2.setRowGroupCollapsed(4, true);
FileOutputStream fileOut = new FileOutputStream("outlining_collapsed.xlsx");
- wb2.write(fileOut);
- fileOut.close();
- wb2.dispose();
+ try {
+ wb2.write(fileOut);
+ } finally {
+ fileOut.close();
+ wb2.dispose();
+ wb2.close();
+ }
}
}
* @param array of tab id's {0,1,2}
*/
public void setTabIdArray(short[] array) {
- _tabids = array;
+ _tabids = array.clone();
}
public String toString() {
this.jceId = jceId;\r
this.ecmaId = ecmaId;\r
this.defaultKeySize = defaultKeySize;\r
- this.allowedKeySize = allowedKeySize;\r
+ this.allowedKeySize = allowedKeySize.clone();\r
this.blockSize = blockSize;\r
this.encryptedVerifierHashLength = encryptedVerifierHashLength;\r
this.xmlId = xmlId;\r
*/
protected void setBlocks(final ListManagedBlock [] blocks)
{
- _blocks = blocks;
+ _blocks = blocks.clone();
}
/**
Double leftMargin = paragraph.getLeftMargin();\r
if (leftMargin == null) {\r
// if the marL attribute is omitted, then a value of 347663 is implied\r
- leftMargin = Units.toPoints(347663*(indentLevel+1));\r
+ leftMargin = Units.toPoints(347663L*(indentLevel+1));\r
}\r
Double indent = paragraph.getIndent();\r
if (indent == null) {\r
- indent = Units.toPoints(347663*indentLevel);\r
+ indent = Units.toPoints(347663L*indentLevel);\r
}\r
Double rightMargin = paragraph.getRightMargin();\r
if (rightMargin == null) {\r
_reserved2Byte = reserved2;
_nColumns = nColumns;
_nRows = nRows;
- _arrayValues = arrayValues;
+ _arrayValues = arrayValues.clone();
}
/**
* @param values2d array values arranged in rows
private int _index;
public ArrayIterator(D[] array) {
- _array = array;
+ _array = array.clone();
_index = 0;
}
public boolean hasNext() {
package org.apache.poi.xssf.usermodel;
-import junit.framework.AssertionFailedError;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+
+import java.io.IOException;
-import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.usermodel.BaseTestSheetUpdateArrayFormulas;
+import org.apache.poi.ss.usermodel.CellRange;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.XSSFITestDataProvider;
+import org.junit.Test;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCellFormula;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCellFormulaType;
+
+import junit.framework.AssertionFailedError;
/**
* Test array formulas in XSSF
*
// Test methods common with HSSF are in superclass
// Local methods here test XSSF-specific details of updating array formulas
-
- public void testXSSFSetArrayFormula_singleCell() {
+ @Test
+ public void testXSSFSetArrayFormula_singleCell() throws IOException {
CellRange<XSSFCell> cells;
XSSFWorkbook workbook = new XSSFWorkbook();
//retrieve the range and check it is the same
assertEquals(range.formatAsString(), firstCell.getArrayFormulaRange().formatAsString());
confirmArrayFormulaCell(firstCell, "C3", formula1, "C3");
+
+ workbook.close();
}
- public void testXSSFSetArrayFormula_multiCell() {
+ @Test
+ public void testXSSFSetArrayFormula_multiCell() throws IOException {
CellRange<XSSFCell> cells;
String formula2 = "456";
confirmArrayFormulaCell(cells.getCell(2, 0), "C6");
assertSame(firstCell, sheet.getFirstCellInArrayFormula(firstCell));
+ workbook.close();
}
private static void confirmArrayFormulaCell(XSSFCell c, String cellRef) {
import org.apache.poi.poifs.filesystem.DirectoryNode;
import org.apache.poi.poifs.filesystem.DocumentEntry;
import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
-import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.POILogFactory;
import org.apache.poi.util.POILogger;
isEncrypted = false;
}
- /**
- * Find the Current User in the filesystem, and create from that
- * @deprecated Use {@link #CurrentUserAtom(DirectoryNode)} instead
- */
- public CurrentUserAtom(POIFSFileSystem fs) throws IOException {
- this(fs.getRoot());
- }
+
/**
* Find the Current User in the filesystem, and create from that
*/
init();
}
- /**
- * Create things from the bytes
- */
- public CurrentUserAtom(byte[] b) {
- _contents = b;
- init();
- }
-
/**
* Actually do the creation from a block of bytes
*/
/** Updates the text in the Atom. Must be 8 bit ascii */
public void setText(byte[] b) {
// Set the text
- _text = b;
+ _text = b.clone();
// Update the size (header bytes 5-8)
LittleEndian.putInt(_header,4,_text.length);
package org.apache.poi.hslf.record;
+import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@Test
public void readNormal() throws Exception {
- POIFSFileSystem fs = new POIFSFileSystem(
- _slTests.openResourceAsStream(normalFile)
- );
+ POIFSFileSystem fs = new POIFSFileSystem(_slTests.getFile(normalFile));
- CurrentUserAtom cu = new CurrentUserAtom(fs);
+ CurrentUserAtom cu = new CurrentUserAtom(fs.getRoot());
+ fs.close();
// Check the contents
assertEquals("Hogwarts", cu.getLastEditUsername());
assertEquals(0x2942, cu.getCurrentEditOffset());
// Round trip
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- cu.writeOut(baos);
-
- CurrentUserAtom cu2 = new CurrentUserAtom(baos.toByteArray());
+ POIFSFileSystem poifs = new POIFSFileSystem();
+ cu.writeToFS(poifs);
+
+ CurrentUserAtom cu2 = new CurrentUserAtom(poifs.getRoot());
assertEquals("Hogwarts", cu2.getLastEditUsername());
assertEquals(0x2942, cu2.getCurrentEditOffset());
+
+ poifs.close();
}
@Test(expected = EncryptedPowerPointFileException.class)
public void readEnc() throws Exception {
- POIFSFileSystem fs = new POIFSFileSystem(
- _slTests.openResourceAsStream(encFile)
- );
+ POIFSFileSystem fs = new POIFSFileSystem(_slTests.getFile(encFile));
- new CurrentUserAtom(fs);
+ new CurrentUserAtom(fs.getRoot());
assertTrue(true); // not yet failed
new HSLFSlideShowImpl(fs);
+
+ fs.close();
}
@Test
public void writeNormal() throws Exception {
// Get raw contents from a known file
- POIFSFileSystem fs = new POIFSFileSystem(
- _slTests.openResourceAsStream(normalFile)
- );
+ POIFSFileSystem fs = new POIFSFileSystem(_slTests.getFile(normalFile));
DocumentEntry docProps = (DocumentEntry)fs.getRoot().getEntry("Current User");
byte[] contents = new byte[docProps.getSize()];
InputStream in = fs.getRoot().createDocumentInputStream("Current User");
in.read(contents);
+ in.close();
+ fs.close();
// Now build up a new one
CurrentUserAtom cu = new CurrentUserAtom();
cu.writeOut(baos);
byte[] out = baos.toByteArray();
- assertEquals(contents.length, out.length);
- for(int i=0; i<contents.length; i++) {
- assertEquals("Byte " + i, contents[i], out[i]);
- }
+ assertArrayEquals(contents, out);
}
}
package org.apache.poi.hssf.usermodel;
-import junit.framework.AssertionFailedError;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
import org.apache.poi.hssf.HSSFITestDataProvider;
import org.apache.poi.hssf.record.ArrayRecord;
import org.apache.poi.hssf.record.aggregates.RowRecordsAggregate;
import org.apache.poi.hssf.record.aggregates.SharedValueManager;
import org.apache.poi.hssf.record.aggregates.TestSharedValueManager;
-import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.usermodel.BaseTestSheetUpdateArrayFormulas;
+import org.apache.poi.ss.usermodel.CellRange;
import org.apache.poi.ss.util.CellRangeAddress;
+import org.junit.Test;
/**
* Test array formulas in HSSF
// Test methods common with XSSF are in superclass
// Local methods here test HSSF-specific details of updating array formulas
-
- public void testHSSFSetArrayFormula_singleCell() {
+ @Test
+ public void testHSSFSetArrayFormula_singleCell() throws IOException {
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Sheet1");
FormulaRecordAggregate agg = (FormulaRecordAggregate)cell.getCellValueRecord();
assertEquals(range.formatAsString(), agg.getArrayFormulaRange().formatAsString());
assertTrue(agg.isPartOfArrayFormula());
+
+ workbook.close();
}
/**
* Makes sure the internal state of HSSFSheet is consistent after removing array formulas
*/
- public void testAddRemoveArrayFormulas_recordUpdates() {
+ @Test
+ public void testAddRemoveArrayFormulas_recordUpdates() throws IOException {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet s = wb.createSheet("Sheet1");
RowRecordsAggregate rra = s.getSheet().getRowsAggregate();
SharedValueManager svm = TestSharedValueManager.extractFromRRA(rra);
if (svm.getArrayRecord(4, 1) != null) {
- throw new AssertionFailedError("Array record was not cleaned up properly.");
+ fail("Array record was not cleaned up properly.");
}
+
+ wb.close();
}
private static void confirmRecordClass(Record[] recs, int index, Class<? extends Record> cls) {
if (recs.length <= index) {
- throw new AssertionFailedError("Expected (" + cls.getName() + ") at index "
- + index + " but array length is " + recs.length + ".");
+ fail("Expected (" + cls.getName() + ") at index "
+ + index + " but array length is " + recs.length + ".");
}
assertEquals(cls, recs[index].getClass());
}
package org.apache.poi.ss.usermodel;
import static org.junit.Assert.assertArrayEquals;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
import org.apache.poi.ss.ITestDataProvider;
import org.apache.poi.ss.formula.FormulaParseException;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.CellReference;
+import org.junit.Test;
/**
* Common superclass for testing usermodel API for array formulas.<br/>
* @author Yegor Kozlov
* @author Josh Micich
*/
-public abstract class BaseTestSheetUpdateArrayFormulas extends TestCase {
+public abstract class BaseTestSheetUpdateArrayFormulas {
protected final ITestDataProvider _testDataProvider;
protected BaseTestSheetUpdateArrayFormulas(ITestDataProvider testDataProvider) {
_testDataProvider = testDataProvider;
}
- public final void testAutoCreateOtherCells() {
+ @Test
+ public final void testAutoCreateOtherCells() throws IOException {
Workbook workbook = _testDataProvider.createWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
assertNotNull(row2);
assertEquals(formula, row2.getCell(0).getCellFormula());
assertEquals(formula, row2.getCell(1).getCellFormula());
+
+ workbook.close();
}
/**
* Set single-cell array formula
*/
- public final void testSetArrayFormula_singleCell() {
+ @Test
+ public final void testSetArrayFormula_singleCell() throws IOException {
Cell[] cells;
Workbook workbook = _testDataProvider.createWorkbook();
assertEquals(range.formatAsString(), cell.getArrayFormulaRange().formatAsString());
//check the formula
assertEquals("SUM(C11:C12*D11:D12)", cell.getCellFormula());
+
+ workbook.close();
}
/**
* Set multi-cell array formula
*/
- public final void testSetArrayFormula_multiCell() {
+ @Test
+ public final void testSetArrayFormula_multiCell() throws IOException {
Workbook workbook = _testDataProvider.createWorkbook();
Sheet sheet = workbook.createSheet();
//retrieve the range and check it is the same
assertEquals(range.formatAsString(), acell.getArrayFormulaRange().formatAsString());
}
+
+ workbook.close();
}
/**
* Passing an incorrect formula to sheet.setArrayFormula
* should throw FormulaParseException
*/
- public final void testSetArrayFormula_incorrectFormula() {
+ @Test
+ public final void testSetArrayFormula_incorrectFormula() throws IOException {
Workbook workbook = _testDataProvider.createWorkbook();
Sheet sheet = workbook.createSheet();
} catch (FormulaParseException e){
//expected exception
}
+
+ workbook.close();
}
/**
* Calls of cell.getArrayFormulaRange and sheet.removeArrayFormula
* on a not-array-formula cell throw IllegalStateException
*/
- public final void testArrayFormulas_illegalCalls() {
+ @Test
+ public final void testArrayFormulas_illegalCalls() throws IOException {
Workbook workbook = _testDataProvider.createWorkbook();
Sheet sheet = workbook.createSheet();
} catch (IllegalArgumentException e){
assertEquals("Cell A1 is not part of an array formula.", e.getMessage());
}
+
+ workbook.close();
}
/**
* create and remove array formulas
*/
- public final void testRemoveArrayFormula() {
+ @Test
+ public final void testRemoveArrayFormula() throws IOException {
Workbook workbook = _testDataProvider.createWorkbook();
Sheet sheet = workbook.createSheet();
assertEquals("Cell "+ref+" is not part of an array formula.", e.getMessage());
}
}
+
+ workbook.close();
}
/**
* Test that when reading a workbook from input stream, array formulas are recognized
*/
- public final void testReadArrayFormula() {
+ @Test
+ public final void testReadArrayFormula() throws IOException {
Cell[] cells;
- Workbook workbook = _testDataProvider.createWorkbook();
- Sheet sheet1 = workbook.createSheet();
+ Workbook workbook1 = _testDataProvider.createWorkbook();
+ Sheet sheet1 = workbook1.createSheet();
cells = sheet1.setArrayFormula("SUM(A1:A3*B1:B3)", CellRangeAddress.valueOf("C4:C6")).getFlattenedCells();
assertEquals(3, cells.length);
cells = sheet1.setArrayFormula("MAX(A1:A3*B1:B3)", CellRangeAddress.valueOf("A4:A6")).getFlattenedCells();
assertEquals(3, cells.length);
- Sheet sheet2 = workbook.createSheet();
+ Sheet sheet2 = workbook1.createSheet();
cells = sheet2.setArrayFormula("MIN(A1:A3*B1:B3)", CellRangeAddress.valueOf("D2:D4")).getFlattenedCells();
assertEquals(3, cells.length);
- workbook = _testDataProvider.writeOutAndReadBack(workbook);
- sheet1 = workbook.getSheetAt(0);
+ Workbook workbook2 = _testDataProvider.writeOutAndReadBack(workbook1);
+ workbook1.close();
+ sheet1 = workbook2.getSheetAt(0);
for(int rownum=3; rownum <= 5; rownum++) {
Cell cell1 = sheet1.getRow(rownum).getCell(2);
assertTrue( cell1.isPartOfArrayFormulaGroup());
assertTrue( cell2.isPartOfArrayFormulaGroup());
}
- sheet2 = workbook.getSheetAt(1);
+ sheet2 = workbook2.getSheetAt(1);
for(int rownum=1; rownum <= 3; rownum++) {
Cell cell1 = sheet2.getRow(rownum).getCell(3);
assertTrue( cell1.isPartOfArrayFormulaGroup());
}
+
+ workbook2.close();
}
/**
* Test that we can set pre-calculated formula result for array formulas
*/
- public void testModifyArrayCells_setFormulaResult(){
+ @Test
+ public void testModifyArrayCells_setFormulaResult() throws IOException {
Workbook workbook = _testDataProvider.createWorkbook();
Sheet sheet = workbook.createSheet();
sheet.setArrayFormula("SUM(A4:A6,B4:B6)", CellRangeAddress.valueOf("B5"));
Cell scell = srange.getTopLeftCell();
assertEquals(Cell.CELL_TYPE_FORMULA, scell.getCellType());
- assertEquals(0.0, scell.getNumericCellValue());
+ assertEquals(0.0, scell.getNumericCellValue(), 0);
scell.setCellValue(1.1);
- assertEquals(1.1, scell.getNumericCellValue());
+ assertEquals(1.1, scell.getNumericCellValue(), 0);
//multi-cell array formula
CellRange<? extends Cell> mrange =
sheet.setArrayFormula("A1:A3*B1:B3", CellRangeAddress.valueOf("C1:C3"));
for(Cell mcell : mrange){
assertEquals(Cell.CELL_TYPE_FORMULA, mcell.getCellType());
- assertEquals(0.0, mcell.getNumericCellValue());
+ assertEquals(0.0, mcell.getNumericCellValue(), 0);
double fmlaResult = 1.2;
mcell.setCellValue(fmlaResult);
- assertEquals(fmlaResult, mcell.getNumericCellValue());
+ assertEquals(fmlaResult, mcell.getNumericCellValue(), 0);
}
+ workbook.close();
}
- public void testModifyArrayCells_setCellType(){
+ @Test
+ public void testModifyArrayCells_setCellType() throws IOException {
Workbook workbook = _testDataProvider.createWorkbook();
Sheet sheet = workbook.createSheet();
sheet.setArrayFormula("SUM(A4:A6,B4:B6)", CellRangeAddress.valueOf("B5"));
Cell scell = srange.getTopLeftCell();
assertEquals(Cell.CELL_TYPE_FORMULA, scell.getCellType());
- assertEquals(0.0, scell.getNumericCellValue());
+ assertEquals(0.0, scell.getNumericCellValue(), 0);
scell.setCellType(Cell.CELL_TYPE_STRING);
assertEquals(Cell.CELL_TYPE_STRING, scell.getCellType());
scell.setCellValue("string cell");
assertEquals(Cell.CELL_TYPE_FORMULA, mcell.getCellType());
assertTrue(mcell.isPartOfArrayFormulaGroup());
}
+ workbook.close();
}
- public void testModifyArrayCells_setCellFormula(){
+ @Test
+ public void testModifyArrayCells_setCellFormula() throws IOException {
Workbook workbook = _testDataProvider.createWorkbook();
Sheet sheet = workbook.createSheet();
assertFalse(scell.isPartOfArrayFormulaGroup());
assertEquals(Cell.CELL_TYPE_FORMULA, scell.getCellType());
//check that setting formula result works
- assertEquals(0.0, scell.getNumericCellValue());
+ assertEquals(0.0, scell.getNumericCellValue(), 0);
scell.setCellValue(33.0);
- assertEquals(33.0, scell.getNumericCellValue());
+ assertEquals(33.0, scell.getNumericCellValue(), 0);
//multi-cell array formula
CellRange<? extends Cell> mrange =
assertEquals("A1:A3*B1:B3", mcell.getCellFormula());
assertTrue(mcell.isPartOfArrayFormulaGroup());
}
+ workbook.close();
}
- public void testModifyArrayCells_removeCell(){
+ @Test
+ public void testModifyArrayCells_removeCell() throws IOException {
Workbook workbook = _testDataProvider.createWorkbook();
Sheet sheet = workbook.createSheet();
assertTrue(mcell.isPartOfArrayFormulaGroup());
assertEquals(Cell.CELL_TYPE_FORMULA, mcell.getCellType());
}
+
+ workbook.close();
}
- public void testModifyArrayCells_removeRow(){
+ @Test
+ public void testModifyArrayCells_removeRow() throws IOException {
Workbook workbook = _testDataProvider.createWorkbook();
Sheet sheet = workbook.createSheet();
sheet.removeRow(mrow);
fail("expected exception");
} catch (IllegalStateException e){
- String msg = "Row[rownum="+mrow.getRowNum()+"] contains cell(s) included in a multi-cell array formula. You cannot change part of an array.";
- //assertEquals(msg, e.getMessage());
+ // String msg = "Row[rownum="+mrow.getRowNum()+"] contains cell(s) included in a multi-cell array formula. You cannot change part of an array.";
+ // assertEquals(msg, e.getMessage());
}
// a failed invocation of Row.removeCell leaves the row
// in the state that it was in prior to the invocation
assertTrue(mcell.isPartOfArrayFormulaGroup());
assertEquals(Cell.CELL_TYPE_FORMULA, mcell.getCellType());
}
+
+ workbook.close();
}
- public void testModifyArrayCells_mergeCells(){
+ @Test
+ public void testModifyArrayCells_mergeCells() throws IOException {
Workbook workbook = _testDataProvider.createWorkbook();
Sheet sheet = workbook.createSheet();
assertEquals(0, sheet.getNumMergedRegions());
assertEquals(1, sheet.getNumMergedRegions());
//we cannot merge cells included in an array formula
- CellRange<? extends Cell> mrange =
- sheet.setArrayFormula("A1:A3*B1:B3", CellRangeAddress.valueOf("C1:C3"));
+ sheet.setArrayFormula("A1:A3*B1:B3", CellRangeAddress.valueOf("C1:C3"));
CellRangeAddress cra = CellRangeAddress.valueOf("C1:C3");
try {
sheet.addMergedRegion(cra);
}
//the number of merged regions remains the same
assertEquals(1, sheet.getNumMergedRegions());
+ workbook.close();
}
- public void testModifyArrayCells_shiftRows(){
+ @Test
+ public void testModifyArrayCells_shiftRows() throws IOException {
Workbook workbook = _testDataProvider.createWorkbook();
Sheet sheet = workbook.createSheet();
sheet.shiftRows(0, 1, 1);
//we cannot set individual formulas for cells included in an array formula
- CellRange<? extends Cell> mrange =
- sheet.setArrayFormula("A1:A3*B1:B3", CellRangeAddress.valueOf("C1:C3"));
+ sheet.setArrayFormula("A1:A3*B1:B3", CellRangeAddress.valueOf("C1:C3"));
try {
sheet.shiftRows(0, 0, 1);
}
*/
+ workbook.close();
}
}