package net.sf.jxls; import net.sf.jxls.exception.ParsePropertyException; import net.sf.jxls.transformer.XLSTransformer; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import java.io.*; import java.util.HashMap; import java.util.Map; /** * @author Leonid Vysochyn */ public class XlsxTest extends BaseTest { public static final String simpleXlsx = "/templates/simple.xlsx"; public static final String simpleDestXLSX = "target/simple_output.xlsx"; public void testWriteXlsx() throws IOException, ParsePropertyException, InvalidFormatException { Map beans = new HashMap(); beans.put( "departments", departments ); InputStream is = new BufferedInputStream(getClass().getResourceAsStream(simpleXlsx)); XLSTransformer transformer = new XLSTransformer(); Workbook resultWorkbook = transformer.transformXLS(is, beans); is.close(); is = new BufferedInputStream(getClass().getResourceAsStream(simpleXlsx)); Workbook sourceWorkbook = WorkbookFactory.create(is); Sheet sourceSheet = sourceWorkbook.getSheetAt(0); Sheet resultSheet = resultWorkbook.getSheetAt(0); Map props = new HashMap(); props.put("${department.name}", "IT"); CellsChecker checker = new CellsChecker(props); checker.checkRows(sourceSheet, resultSheet, 1, 0, 3, false); checker.checkListCells(sourceSheet, 5, resultSheet, 3, (short) 0, itEmployeeNames); checker.checkListCells(sourceSheet, 5, resultSheet, 3, (short) 1, itPayments); checker.checkListCells(sourceSheet, 5, resultSheet, 3, (short) 2, itBonuses); checker.ignoreStyle = true; checker.checkFormulaCell( sourceSheet, 5, resultSheet, 3, (short)3, "B4*(1+C4)"); checker.checkFormulaCell( sourceSheet, 5, resultSheet, 5, (short)3, "B6*(1+C6)"); checker.checkFormulaCell( sourceSheet, 5, resultSheet, 7, (short)3, "B8*(1+C8)"); checker.checkFormulaCell( sourceSheet, 7, resultSheet, 8, (short)1, "SUM(B4:B8)"); checker.ignoreStyle = false; props.clear(); props.put("${department.name}", "HR"); checker = new CellsChecker(props); checker.checkRows(sourceSheet, resultSheet, 1, 9, 3, false); props.clear(); checker.checkListCells(sourceSheet, 5, resultSheet, 12, (short) 0, hrEmployeeNames); checker.checkListCells(sourceSheet, 5, resultSheet, 12, (short) 1, hrPayments); checker.checkListCells(sourceSheet, 5, resultSheet, 12, (short) 2, hrBonuses); checker.checkFormulaCell( sourceSheet, 5, resultSheet, 12, (short)3, "B13*(1+C13)"); checker.checkFormulaCell( sourceSheet, 5, resultSheet, 13, (short)3, "B14*(1+C14)"); checker.checkFormulaCell( sourceSheet, 5, resultSheet, 15, (short)3, "B16*(1+C16)"); checker.checkFormulaCell( sourceSheet, 7, resultSheet, 16, (short)1, "SUM(B13:B16)"); props.clear(); props.put("${department.name}", "BA"); checker = new CellsChecker(props); checker.checkRows(sourceSheet, resultSheet, 1, 17, 3, false); props.clear(); checker.checkListCells(sourceSheet, 5, resultSheet, 20, (short) 0, baEmployeeNames); checker.checkListCells(sourceSheet, 5, resultSheet, 20, (short) 1, baPayments); checker.checkListCells(sourceSheet, 5, resultSheet, 20, (short) 2, baBonuses); checker.checkFormulaCell( sourceSheet, 5, resultSheet, 20, (short)3, "B21*(1+C21)"); checker.checkFormulaCell( sourceSheet, 5, resultSheet, 21, (short)3, "B22*(1+C22)"); checker.checkFormulaCell( sourceSheet, 5, resultSheet, 22, (short)3, "B23*(1+C23)"); checker.checkFormulaCell( sourceSheet, 7, resultSheet, 23, (short)1, "SUM(B21:B23)"); saveWorkbook(resultWorkbook, simpleDestXLSX); } }