import org.apache.poi.ss.util.CellRangeAddress;
import org.junit.After;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell;
import java.util.Locale;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
public class TestXSSFSheetShiftRowsAndColumns {
- final File resultDir=new File("build/custom-reports-test");
- XSSFWorkbook workbook=null;
- XSSFSheet sheet=null;
- String fileName=null;
- final int numRows=4;
- final int numCols=4;
- final int INSERT_ROW=1;
- final int INSERT_COLUMN=1;
- final int FIRST_MERGE_ROW=INSERT_ROW+1;
- final int LAST_MERGE_ROW=numRows-1;
- final int FIRST_MERGE_COL=INSERT_COLUMN+1;
- final int LAST_MERGE_COL=numCols-1;
+ private static final File resultDir = new File("build/custom-reports-test");
+
+ private static final int numRows = 4;
+ private static final int numCols = 4;
+
+ private static final int INSERT_ROW = 1;
+ private static final int INSERT_COLUMN = 1;
+ private static final int FIRST_MERGE_ROW = INSERT_ROW+1;
+ private static final int LAST_MERGE_ROW = numRows-1;
+ private static final int FIRST_MERGE_COL = INSERT_COLUMN+1;
+ private static final int LAST_MERGE_COL = numCols-1;
+
+ private XSSFWorkbook workbook = null;
+ private XSSFSheet sheet = null;
+ private String fileName = null;
public TestXSSFSheetShiftRowsAndColumns() {
- resultDir.mkdirs();
+ assertTrue("Failed to create directory " + resultDir,
+ resultDir.exists() || resultDir.mkdirs());
}
/**
* 0 to numCols-1.
*/
@Before
- public void setup() {
- final String procName="TestXSSFSheetShiftRowsAndColumns.setup";
+ public void setup() throws IOException {
+ final String procName = "TestXSSFSheetShiftRowsAndColumns.setup";
+ fileName = procName+".xlsx";
+
workbook = new XSSFWorkbook();
sheet = workbook.createSheet();
/*
* Add a merge area
*/
- final CellRangeAddress range=new CellRangeAddress(FIRST_MERGE_ROW,LAST_MERGE_ROW,FIRST_MERGE_COL,LAST_MERGE_COL);
+ final CellRangeAddress range = new CellRangeAddress(FIRST_MERGE_ROW,LAST_MERGE_ROW,FIRST_MERGE_COL,LAST_MERGE_COL);
sheet.addMergedRegion(range);
System.out.println(String.format(Locale.US, "\n%s: mergeArea=%s", procName,range));
+ writeFile(procName);
}
* This method writes the workbook to resultDir/fileName.
*/
@After
- public void cleanup() {
- final String procName="TestXSSFSheetRemoveTable.cleanup";
+ public void cleanup() throws IOException {
+ final String procName = "TestXSSFSheetRemoveTable.cleanup";
if (workbook == null) {
System.out.println(String.format(Locale.ROOT,"%s: workbook==null",procName));
return;
}
- if(fileName==null) {
+ if(fileName == null) {
System.out.println(String.format(Locale.ROOT, "%s: fileName==null",procName));
return;
}
- final File file=new File(resultDir,fileName);
+ writeFile(procName);
+
+ workbook.close();
+ }
+
+ private void writeFile(String procName) throws IOException {
+ final File file = new File(resultDir,fileName);
try (OutputStream fileOut = new FileOutputStream(file)) {
workbook.write(fileOut);
System.out.println(String.format(Locale.ROOT, "%s: test file written to %s",procName,file.getAbsolutePath()));
- } catch (Exception e) {
- System.err.println(e.getMessage());
- } finally {
- try {
- workbook.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
}
}
*/
@Test
public void testNoShift() {
- final String procName="testNoShift";
- fileName=procName+".xlsx";
+ final String procName = "testNoShift";
+ fileName = procName+".xlsx";
testCellAddresses(procName,0,0);
testMergeRegion(procName,0,0);
@Test
public void testShiftOneRowAndTestAddresses() {
- final String procName="testShiftOneRowAndTestAddresses";
- fileName=procName+".xlsx";
- final int nRowsToShift=1;
+ final String procName = "testShiftOneRowAndTestAddresses";
+ fileName = procName+".xlsx";
+ final int nRowsToShift = 1;
sheet.shiftRows(INSERT_ROW, numRows-1, nRowsToShift);
testCellAddresses(procName,nRowsToShift,0);
System.out.println(String.format(Locale.US, "%s: finished without error", procName));
}
- @Ignore("currently fails")
@Test
public void testShiftOneRowAndTestMergeRegion() {
- final String procName="testShiftOneRowAndTestMergeRegion";
- fileName=procName+".xlsx";
- final int nRowsToShift=1;
+ final String procName = "testShiftOneRowAndTestMergeRegion";
+ fileName = procName+".xlsx";
+ final int nRowsToShift = 1;
sheet.shiftRows(INSERT_ROW, numRows-1, nRowsToShift);
testMergeRegion(procName,nRowsToShift,0);
@Test
public void testShiftOneColumnAndTestAddresses() {
- final String procName="testShiftOneColumnAndTestAddresses";
- fileName=procName+".xlsx";
- final int nShift=1;
+ final String procName = "testShiftOneColumnAndTestAddresses";
+ fileName = procName+".xlsx";
+ final int nShift = 1;
sheet.shiftColumns(INSERT_COLUMN, numCols-1, nShift);
testCellAddresses(procName,0,nShift);
System.out.println(String.format(Locale.US, "%s: finished without error", procName));
}
- @Ignore("currently fails")
@Test
public void testShiftOneColumnAndTestMergeRegion() {
- final String procName="testShiftOneColumnAndTestMergeRegion";
- fileName=procName+".xlsx";
- final int nShift=1;
+ final String procName = "testShiftOneColumnAndTestMergeRegion";
+ fileName = procName+".xlsx";
+ final int nShift = 1;
sheet.shiftColumns(INSERT_COLUMN, numCols-1, nShift);
- testMergeRegion(procName,0,nShift);
+ testMergeRegion(procName,0, nShift);
System.out.println(String.format(Locale.US, "%s: finished without error", procName));
}
* Verify that the cell addresses are consistent
*/
private void testCellAddresses(String procName,int nRowsToShift,int nColsToShift) {
- final int nNumRows=nRowsToShift+this.numCols;
- final int nNumCols=nColsToShift+this.numCols;
- for(int nRow=0;nRow<nNumRows;++nRow) {
- final XSSFRow row=sheet.getRow(nRow);
- if(row==null) {
+ final int nNumRows = nRowsToShift+ numCols;
+ final int nNumCols = nColsToShift+ numCols;
+ for(int nRow = 0;nRow<nNumRows;++nRow) {
+ final XSSFRow row = sheet.getRow(nRow);
+ if(row == null) {
System.out.println(String.format(Locale.US, "%s: Row %d is empty", procName,nRow));
continue;
}
- for(int nCol=0;nCol<nNumCols;++nCol) {
- final String address=new CellAddress(nRow,nCol).formatAsString();
- final XSSFCell cell=row.getCell(nCol);
- if(cell==null) {
+ for(int nCol = 0;nCol<nNumCols;++nCol) {
+ final String address = new CellAddress(nRow,nCol).formatAsString();
+ final XSSFCell cell = row.getCell(nCol);
+ if(cell == null) {
System.out.println(String.format(Locale.US, "%s: Cell %s is empty", procName,address));
continue;
}
- final CTCell ctCell=cell.getCTCell();
- final Object cellAddress=cell.getAddress().formatAsString();
- final Object r=ctCell.getR();
+ final CTCell ctCell = cell.getCTCell();
+ final Object cellAddress = cell.getAddress().formatAsString();
+ final Object r = ctCell.getR();
- if(nCol==0 || nRow==0) {
+ if(nCol == 0 || nRow == 0) {
System.out.println(String.format(Locale.US, "%s: Row %d col %d address=%s cell.address=%s cell.getR=%s", procName, nRow,
nCol, address, cellAddress, ctCell.getR()));
}
* Verify that the merge area is consistent
*/
private void testMergeRegion(String procName,int nRowsToShift,int nColsToShift) {
- final CellRangeAddress range=sheet.getMergedRegion(0);
- assertEquals(String.format(Locale.US, "%s: Testing merge area %s",procName,range),range,
- new CellRangeAddress(FIRST_MERGE_ROW,LAST_MERGE_ROW+nRowsToShift,FIRST_MERGE_COL,LAST_MERGE_COL+nColsToShift));
+ final CellRangeAddress range = sheet.getMergedRegion(0);
+ assertEquals(String.format(Locale.US, "%s: Testing merge area %s", procName, range),
+ new CellRangeAddress(FIRST_MERGE_ROW + nRowsToShift, LAST_MERGE_ROW + nRowsToShift,
+ FIRST_MERGE_COL + nColsToShift, LAST_MERGE_COL + nColsToShift),
+ range);
}
-
}
\ No newline at end of file