Java 导出多个sheet的excel,每个sheet页数据动态添加,transformMultipleSheetsList方法的使用

  1. 导入依赖
        <dependency>
            <groupId>net.sf.jxls</groupId>
            <artifactId>jxls-core</artifactId>
            <version>1.0.6</version>
        </dependency>
  1. 创建数据
private static List<Company> getData() {
        // 公司对账信息
        List<Company> companyVOList = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            Company company = new Company();
            company.setCompanyName("腾讯:"+i);
            company.setAccountNo("8047226100"+i);

            List<AccountAssets> accountAssetsList = new ArrayList<>();
            for (int j = 0; j < 4; j++) {
                AccountAssets assets = new AccountAssets();
                assets.setCurrency("HKD");
                assets.setSRedeemedDeposit("111"+i);
                assets.setUnavailableCash("222"+i);
                assets.setNoSettlementDateBalance("333"+i);
                assets.setSettlementDateBalance("444"+i);
                assets.setTradeDateBalance("555"+i);
                accountAssetsList.add(assets);
            }
            company.setAccountAssetsList(accountAssetsList);


            List<AccountPosition>  accountPositionList = new ArrayList<>();
            for (int j = 0; j < 6; j++) {
                AccountPosition accountPosition = new AccountPosition();
                accountPosition.setStockCode("9988"+i);
                accountPosition.setAvailableQuantity("666"+i);
                accountPosition.setMarketValue("777"+i);
                accountPosition.setQuantity("888"+i);
                accountPosition.setSharesOnHand("999"+i);
                accountPosition.setUnavailableQuantity("000"+i);
                accountPosition.setStockOnHold("9999"+i);
                accountPositionList.add(accountPosition);
            }
            company.setAccountPositionList(accountPositionList);

            companyVOList.add(company);
        }
        return companyVOList;
    }
  1. 核心代码
    private String testGenerateExcelFile(List<CompanyInfo> companyInfoList) throws IOException{
        String filePath = "";
        InputStream inputStream = null;
        ByteArrayOutputStream outputStream = null;
        // 创建工作簿
        Workbook workbook = null;
        try {
            // 读取文件
            inputStream = new FileInputStream(new File("D:\\对账邮件\\模板\\company_reconciliation_test.xlsx"));
            List<String> sheetNameList = new ArrayList<>();
            List<CompanyCheckInfo> companyList = new ArrayList<>();
            for (CompanyInfo companyInfo : companyInfoList) {
                sheetNameList.add(companyInfo.getCompanyName());
                CompanyCheckInfo checkInfo = new CompanyCheckInfo();
                checkInfo.setCompanyName(companyInfo.getCompanyName());
                checkInfo.setAccountNo(companyInfo.getAccountNo());
                checkInfo.setAccountStatus(companyInfo.getAccountStatus());
                checkInfo.setCheckResult(companyInfo.getCheckResult());
            }
            XLSTransformer xlsTransformer = new XLSTransformer();
            Map<String,Object> map = new HashMap<>();
            map.put("company",companyList);
            xlsTransformer.transformXLS(inputStream,map);
            workbook = xlsTransformer.transformMultipleSheetsList(inputStream,companyInfoList,sheetNameList,"company",new HashMap<>(),1);
            // 输出文件到本地
            long fileName = System.currentTimeMillis();
            String outPath = "D:\\对账邮件\\输出文件\\"+fileName+".xlsx";
            FileOutputStream out = new FileOutputStream(outPath);
            workbook.write(out);

        }catch (Exception e){
            e.printStackTrace();
        }
        return filePath;
    }
  1. transformMultipleSheetsList(InputStream is, List objects, List newSheetNames, String beanName, Map beanParams, int startSheetNum)方法解释
    is:读取模板文件所生成的流
    objects:需要填充到excel中的数据
    newSheetNames:每个sheet页的名称
    beanName:模板中的映射名称
    beanParams:
    startSheetNum:表示从第几个sheet开始
    在这里插入图片描述

  2. 模板内容
    在这里插入图片描述

  3. 结果
    在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,您可以使用EasyExcel库来导出多个sheet,并且可以使用@Excel注解来指定导出数据的字段和表头信息。下面是一个样例代码,用于演示如何使用@Excel注解导出多个sheet: ```java // 定义一个导出数据的实体类 public class ExportData { @ExcelProperty("姓名") private String name; @ExcelProperty("年龄") private Integer age; // 其他属性... } // 导出多个sheet方法 public void exportDataToExcel(String filename) { // 创建导出数据 List<ExportData> dataList1 = new ArrayList<>(); dataList1.add(new ExportData("张三", 20)); dataList1.add(new ExportData("李四", 22)); List<ExportData> dataList2 = new ArrayList<>(); dataList2.add(new ExportData("王五", 25)); dataList2.add(new ExportData("赵六", 27)); // 使用 EasyExcel 进行导出 ExcelWriter writer = EasyExcel.write(filename).build(); WriteSheet sheet1 = EasyExcel.writerSheet(0, "Sheet1").head(ExportData.class).build(); WriteSheet sheet2 = EasyExcel.writerSheet(1, "Sheet2").head(ExportData.class).build(); writer.write(dataList1, sheet1); writer.write(dataList2, sheet2); writer.finish(); } ``` 在这个代码中,我们先定义了一个导出数据实体类ExportData,然后使用EasyExcel库进行导出。我们创建了两个sheet,分别对应两个导出数据列表dataList1和dataList2。使用@ExcelProperty注解来指定每个字段对应的表头信息。最后使用ExcelWriter将数据写入Excel文件中,使用WriteSheet指定每个sheet的名称和表头信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值