⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readerbuildertest.java

📁 一个java生成自动生成Excel
💻 JAVA
字号:
package net.sf.jxls.reader;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import junit.framework.TestCase;
import net.sf.jxls.reader.sample.Department;
import net.sf.jxls.reader.sample.Employee;

import org.xml.sax.SAXException;

/**
 * @author Leonid Vysochyn
 */
public class ReaderBuilderTest extends TestCase {
    public static final String dataXLS = "/templates/departmentData.xls";
    public static final String xmlConfig = "/xml/departments.xml";

    public void testBuildFromXML() throws IOException, SAXException {
        InputStream inputXML = new BufferedInputStream(getClass().getResourceAsStream(xmlConfig));
        XLSReader reader = ReaderBuilder.buildFromXML( inputXML );
        assertNotNull( reader );
        assertEquals( 3, reader.getSheetReaders().size() );
        XLSSheetReader sheetReader1 = (XLSSheetReader) reader.getSheetReaders().get("Sheet1");
        assertEquals( 2, sheetReader1.getBlockReaders().size() );
        XLSBlockReader blockReader = (XLSBlockReader) sheetReader1.getBlockReaders().get(0);
        assertTrue( blockReader instanceof SimpleBlockReader);
        SimpleBlockReader blockReader1 = (SimpleBlockReader) blockReader;
        assertEquals( 5, blockReader1.getMappings().size() );
        BeanCellMapping mapping1 = (BeanCellMapping) blockReader1.getMappings().get(0);
        assertEquals( "department.name", mapping1.getFullPropertyName() );
        assertEquals( "B1", mapping1.getCellName() );
        BeanCellMapping mapping2 = (BeanCellMapping) blockReader1.getMappings().get(1);
        assertEquals( "department.chief.name", mapping2.getFullPropertyName() );
        assertEquals( "A4", mapping2.getCellName() );
        XLSSheetReader sheetReader2 = (XLSSheetReader) reader.getSheetReaders().get("Sheet2");
        assertEquals( 3, sheetReader2.getBlockReaders().size() );
        XLSSheetReader sheetReader3 = (XLSSheetReader) reader.getSheetReaders().get("Sheet3");
        assertEquals( 1, sheetReader3.getBlockReaders().size() );
    }

    public void testBuildFromXML2() throws IOException, SAXException {
        InputStream inputXML = new BufferedInputStream(getClass().getResourceAsStream(xmlConfig));
        XLSReader mainReader = ReaderBuilder.buildFromXML( inputXML );
        InputStream inputXLS = new BufferedInputStream(getClass().getResourceAsStream(dataXLS));
        Department department = new Department();
        Department hrDepartment = new Department();
        List departments = new ArrayList();
        Map beans = new HashMap();
        beans.put("department", department);
        beans.put("hrDepartment", hrDepartment);
        beans.put("departments", departments);
        mainReader.read( inputXLS, beans);
        inputXLS.close();
        // check sheet1 data
        assertEquals( "IT", department.getName() );
        assertEquals( "Maxim", department.getChief().getName() );
        assertEquals( new Integer(30), department.getChief().getAge() );
        assertEquals( new Double( 3000.0), department.getChief().getPayment() );
        assertEquals( new Double(0.25), department.getChief().getBonus() );
        assertEquals( 4, department.getStaff().size() );
        Employee employee = (Employee) department.getStaff().get(0);
        checkEmployee( employee, "Oleg", new Integer(32), new Double(2000.0), new Double(0.20) );
        employee = (Employee) department.getStaff().get(1);
        checkEmployee( employee, "Yuri", new Integer(29), new Double(1800.0), new Double(0.15) );
        employee = (Employee) department.getStaff().get(2);
        checkEmployee( employee, "Leonid", new Integer(30), new Double(1700.0), new Double(0.20) );
        employee = (Employee) department.getStaff().get(3);
        checkEmployee( employee, "Alex", new Integer(28), new Double(1600.0), new Double(0.20) );
        // check sheet2 data
        checkEmployee( hrDepartment.getChief(), "Betsy", new Integer(37), new Double(2200.0), new Double(0.3) );
        assertEquals(4, hrDepartment.getStaff().size() );
        employee = (Employee) hrDepartment.getStaff().get(0);
        checkEmployee( employee, "Olga", new Integer(26), new Double(1400.0), new Double(0.20) );
        employee = (Employee) hrDepartment.getStaff().get(1);
        checkEmployee( employee, "Helen", new Integer(30), new Double(2100.0), new Double(0.10) );
        employee = (Employee) hrDepartment.getStaff().get(2);
        checkEmployee( employee, "Keith", new Integer(24), new Double(1800.0), new Double(0.15) );
        employee = (Employee) hrDepartment.getStaff().get(3);
        checkEmployee( employee, "Cat", new Integer(34), new Double(1900.0), new Double(0.15) );
    }

    private void checkEmployee(Employee employee, String name, Integer age, Double payment, Double bonus){
        assertNotNull( employee );
        assertEquals( name, employee.getName() );
        assertEquals( age, employee.getAge() );
        assertEquals( payment, employee.getPayment() );
        assertEquals( bonus, employee.getBonus() );
    }

    public void atestBuildWorkbookReader(){
        ReaderBuilder builder = new ReaderBuilder();
        builder.addSheetReader("Sheet 1").addSheetReader("Sheet 2");
        XLSReader reader = builder.getReader();
        assertEquals( "Incorrect number of sheet readers created", reader.getSheetReaders().size(), 2);
    }

    public void atestBuildWorkbookSheetBlockReader(){
        ReaderBuilder builder = new ReaderBuilder();
        builder.addSheetReader("Sheet 1");
        builder.addSimpleBlockReader( 1, 2 );
        builder.addSimpleBlockReader( 4, 5 );
        XLSReader reader = builder.getReader();
        XLSSheetReader sheetReader = (XLSSheetReader) reader.getSheetReaders().get("Sheet 1");
        assertEquals("Incorrect number of block readers", sheetReader.getBlockReaders().size(), 2);
        XLSBlockReader blockReader1 = (XLSBlockReader) sheetReader.getBlockReaders().get(0);
        assertEquals("BlockReader start row is incorrect", blockReader1.getStartRow(), 1);
        assertEquals("BlockReader end row is incorrect", blockReader1.getEndRow(), 2);
    }

    public void atestBuildWorkbookSheetBlockReaderWithMappings(){
        ReaderBuilder builder = new ReaderBuilder();
        builder.addSheetReader("Sheet 1");
        builder.addSimpleBlockReader( 0, 6 );
        builder.addMapping("B1", "department.name");
        builder.addMapping("A4", "department.chief.name");
        builder.addMapping("D4", "department.chief.payment");
        XLSReader reader = builder.getReader();
        XLSSheetReader sheetReader = (XLSSheetReader) reader.getSheetReaders().get("Sheet 1");
        XLSBlockReader blockReader = (XLSBlockReader) sheetReader.getBlockReaders().get(0);
//        assertEquals("Number of mappings is incorrect", blockReader.getMappings().size(), 3 );
//        BeanCellMapping mapping = (BeanCellMapping) blockReader.getMappings().get(0);
//        assertEquals("Incorrect cell name", mapping.getCellName(), "B1");
//        assertEquals("Incorrect property name", mapping.getFullPropertyName(), "department.name");
//        mapping = (BeanCellMapping) blockReader.getMappings().get(2);
//        assertEquals("Incorrect cell name", mapping.getCellName(), "D4");
//        assertEquals("Incorrect property name", mapping.getFullPropertyName(), "department.chief.payment");
    }

    public void atestBuildWorkbookSheetLoopReader(){
        ReaderBuilder builder = new ReaderBuilder();
        builder.addSheetReader("Sheet 1");
        builder.addLoopBlockReader(7, 8, "department.staff", "employee", Employee.class);
        builder.addSimpleBlockReader( 7, 10 );
        builder.addSimpleBlockReader( 11, 15 );
        XLSReader reader = builder.getReader();
        XLSSheetReader sheetReader = (XLSSheetReader) reader.getSheetReaders().get("Sheet 1");
        XLSLoopBlockReader loopBlockReader = (XLSLoopBlockReader) sheetReader.getBlockReaders().get(0);
        assertTrue( loopBlockReader instanceof XLSForEachBlockReaderImpl );

        assertEquals("Number of block readers is incorrect", loopBlockReader.getBlockReaders().size(), 2 );
        XLSBlockReader blockReader1 = (XLSBlockReader) loopBlockReader.getBlockReaders().get(0);
        assertEquals("BlockReader start row is incorrect", blockReader1.getStartRow(), 7);
        assertEquals("BlockReader end row is incorrect", blockReader1.getEndRow(), 10);
        XLSBlockReader blockReader2 = (XLSBlockReader) loopBlockReader.getBlockReaders().get(1);
        assertEquals("BlockReader start row is incorrect", blockReader2.getStartRow(), 11);
        assertEquals("BlockReader end row is incorrect", blockReader2.getEndRow(), 15);

    }

    public void atestBuildFunctionalWorkbookReader(){
        ReaderBuilder builder = new ReaderBuilder();
        builder.addSheetReader("Sheet 1");
        builder.addSimpleBlockReader( 0, 6 );
        builder.addMapping("B1", "department.name");
        builder.addMapping("A4", "department.chief.name");

        builder.addSheetReader("Sheet 2");
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -