import java.io.IOException;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.tests.usermodel.BaseTestXRow;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellCopyPolicy;
workbook.close();
}
+ @Test
+ void testCopyRowFromHssfExternalSheet() throws IOException {
+ final XSSFWorkbook xssfWorkbook = new XSSFWorkbook();
+ final HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
+ final Sheet srcSheet = hssfWorkbook.createSheet("src");
+ final XSSFSheet destSheet = xssfWorkbook.createSheet("dest");
+ xssfWorkbook.createSheet("other");
+
+ final Row srcRow = srcSheet.createRow(0);
+ int col = 0;
+ //Test 2D and 3D Ref Ptgs (Pxg for OOXML Workbooks)
+ srcRow.createCell(col++).setCellFormula("B5");
+ srcRow.createCell(col++).setCellFormula("src!B5");
+ srcRow.createCell(col++).setCellFormula("dest!B5");
+ srcRow.createCell(col++).setCellFormula("other!B5");
+
+ //Test 2D and 3D Ref Ptgs with absolute row
+ srcRow.createCell(col++).setCellFormula("B$5");
+ srcRow.createCell(col++).setCellFormula("src!B$5");
+ srcRow.createCell(col++).setCellFormula("dest!B$5");
+ srcRow.createCell(col++).setCellFormula("other!B$5");
+
+ //Test 2D and 3D Area Ptgs (Pxg for OOXML Workbooks)
+ srcRow.createCell(col++).setCellFormula("SUM(B5:D$5)");
+ srcRow.createCell(col++).setCellFormula("SUM(src!B5:D$5)");
+ srcRow.createCell(col++).setCellFormula("SUM(dest!B5:D$5)");
+ srcRow.createCell(col++).setCellFormula("SUM(other!B5:D$5)");
+
+ //////////////////
+
+ final XSSFRow destRow = destSheet.createRow(1);
+ destRow.copyRowFrom(srcRow, new CellCopyPolicy());
+
+ //////////////////
+
+ //Test 2D and 3D Ref Ptgs (Pxg for OOXML Workbooks)
+ col = 0;
+ Cell cell = destRow.getCell(col++);
+ assertNotNull(cell);
+ assertEquals("B6", cell.getCellFormula(), "RefPtg");
+
+ cell = destRow.getCell(col++);
+ assertNotNull(cell);
+ assertEquals("src!B6", cell.getCellFormula(), "Ref3DPtg");
+
+ cell = destRow.getCell(col++);
+ assertNotNull(cell);
+ assertEquals("dest!B6", cell.getCellFormula(), "Ref3DPtg");
+
+ cell = destRow.getCell(col++);
+ assertNotNull(cell);
+ assertEquals("other!B6", cell.getCellFormula(), "Ref3DPtg");
+
+ /////////////////////////////////////////////
+
+ //Test 2D and 3D Ref Ptgs with absolute row (Ptg row number shouldn't change)
+ cell = destRow.getCell(col++);
+ assertNotNull(cell);
+ assertEquals("B$5", cell.getCellFormula(), "RefPtg");
+
+ cell = destRow.getCell(col++);
+ assertNotNull(cell);
+ assertEquals("src!B$5", cell.getCellFormula(), "Ref3DPtg");
+
+ cell = destRow.getCell(col++);
+ assertNotNull(cell);
+ assertEquals("dest!B$5", cell.getCellFormula(), "Ref3DPtg");
+
+ cell = destRow.getCell(col++);
+ assertNotNull(cell);
+ assertEquals("other!B$5", cell.getCellFormula(), "Ref3DPtg");
+
+ //////////////////////////////////////////
+
+ //Test 2D and 3D Area Ptgs (Pxg for OOXML Workbooks)
+ // Note: absolute row changes from last cell to first cell in order
+ // to maintain topLeft:bottomRight order
+ cell = destRow.getCell(col++);
+ assertNotNull(cell);
+ assertEquals("SUM(B$5:D6)", cell.getCellFormula(), "Area2DPtg");
+
+ cell = destRow.getCell(col++);
+ assertNotNull(cell);
+ assertEquals("SUM(src!B$5:D6)", cell.getCellFormula(), "Area3DPtg");
+
+ cell = destRow.getCell(col++);
+ assertNotNull(destRow.getCell(6));
+ assertEquals("SUM(dest!B$5:D6)", cell.getCellFormula(), "Area3DPtg");
+
+ cell = destRow.getCell(col++);
+ assertNotNull(destRow.getCell(7));
+ assertEquals("SUM(other!B$5:D6)", cell.getCellFormula(), "Area3DPtg");
+
+ xssfWorkbook.close();
+ }
+
@Test
void testCopyRowOverwritesExistingRow() throws IOException {
final XSSFWorkbook workbook = new XSSFWorkbook();