Excel 导出的多种方式

编辑
  • 文档创建者:印然
  • 浏览次数:7584次
  • 编辑次数:23次
  • 最近更新:susie 于 2019-04-25
  • 1. 描述

    在导出章节中我们介绍了 Excel 导出方式 ExcelExporter,此为原样导出。若是您先前学习过 FineReport 学习教程,您会知道,在 FineReport 中,除原样导出外还有另外三种导出方式:分页导出、分页分 Sheet 导出、大数据量导出。在程序中有不同的接口来实现:

    1.1 原样导出 Excel2003
    //原样导出excel2003
                outputStream = new FileOutputStream(new File("C:\\test\\ExcelExport.xls"));  
                ExcelExporter excel = new ExcelExporter();  
                excel.setVersion(true);
                excel.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
    1.2 原样导出 Excel2007
    //原样导出excel2007
               outputStream = new FileOutputStream(new File("C:\\test\\ExcelExport.xlsx"));  
               StreamExcel2007Exporter excel1 = new StreamExcel2007Exporter();
               excel.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
    1.3 分页导出 Excel2003
    //分页导出excel2003
                outputStream = new FileOutputStream(new File("C:\\test\\PageExcelExport.xls"));
                PageExcelExporter page = new PageExcelExporter(ReportUtils.getPaperSettingListFromWorkBook(workbook.execute(parameterMap,new WriteActor())));
                page.setVersion(true);
                page.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
    1.4 分页导出 Excel2007
    //分页导出excel2007
                outputStream = new FileOutputStream(new File("C:\\test\\PageExcelExport.xlsx")); 
                PageExcel2007Exporter page1 = new PageExcel2007Exporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook));
                page1.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
    1.5 分页分 Sheet 导出 Excel2003
    //分页分sheet导出excel2003
                outputStream = new FileOutputStream(new File("C:\\test\\PageSheetExcelExport.xls"));
                PageToSheetExcelExporter sheet = new PageToSheetExcelExporter(ReportUtils.getPaperSettingListFromWorkBook(workbook.execute(parameterMap,new WriteActor())));
                sheet.setVersion(true);
                sheet.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
    1.6 分页分 Sheet 导出 Excel2007
    //分页分sheet导出excel2007
                outputStream = new FileOutputStream(new File("C:\\test\\PageSheetExcelExport.xlsx"));
                PageToSheetExcel2007Exporter sheet1 = new PageToSheetExcel2007Exporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook));
                sheet1.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
    1.7 大数据量导出
    大数据量导出默认是 65512 行的 .xls 组成的压缩包
    //大数据量导出
                outputStream = new FileOutputStream(new File("C:\\test\\LargeExcelExport.zip"));
                LargeDataPageExcelExporter large = new LargeDataPageExcelExporter(ReportUtils.getPaperSettingListFromWorkBook(workbook.execute(parameterMap,new WriteActor())), true);
                //导出2007版outputStream = new FileOutputStream(new File("C:\\test\\LargeExcelExport.xlsx")); LargeDataPageExcel2007Exporter large = new LargeDataPageExcel2007Exporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook), true);
                large.export(outputStream, workbook.execute(parameterMap,new WriteActor()));

    2. 示例

    2.1 完整可执行代码
    package com.fr.io;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import com.fr.base.operator.common.CommonOperator;
    import com.fr.chart.activator.ChartBaseActivator;
    import com.fr.config.activator.BaseDBActivator;
    import com.fr.config.activator.ConfigurationActivator;
    import com.fr.data.impl.config.activator.RestrictionActivator;
    import com.fr.env.operator.CommonOperatorImpl;
    import com.fr.base.Parameter;
    import com.fr.io.exporter.ExcelExporter;
    import com.fr.io.exporter.LargeDataPageExcelExporter;
    import com.fr.io.exporter.PageExcel2007Exporter;
    import com.fr.io.exporter.PageExcelExporter;
    import com.fr.io.exporter.PageToSheetExcel2007Exporter;
    import com.fr.io.exporter.PageToSheetExcelExporter;
    import com.fr.io.exporter.excel.stream.StreamExcel2007Exporter;
    import com.fr.main.TemplateWorkBook;
    import com.fr.main.workbook.ResultWorkBook;
    import com.fr.module.Module;
    import com.fr.module.tool.ActivatorToolBox;
    import com.fr.report.ReportActivator;
    import com.fr.report.core.ReportUtils;
    import com.fr.report.module.ReportBaseActivator;
    import com.fr.stable.WriteActor;
    import com.fr.store.StateServerActivator;
    import com.fr.workspace.simple.SimpleWork;
    
    
    public class ExportExcel {
        public static void main(String[] args) {
            // 首先需要定义执行所在的环境,这样才能正确读取数据库信息
            // 定义报表运行环境,用于执行报表
            Module module = ActivatorToolBox.simpleLink(new BaseDBActivator(),
                    new ConfigurationActivator(),
                    new StateServerActivator(),
                    new ReportBaseActivator(),
                    new RestrictionActivator(),
                    new ReportActivator(),
                    new ChartBaseActivator());
            SimpleWork.supply(CommonOperator.class, new CommonOperatorImpl());
            String envpath= "//Applications//FineReport10_325//webapps//webroot//WEB-INF"; //工程路径
            SimpleWork.checkIn(envpath);
            module.start();
            ResultWorkBook rworkbook = null;
            try {
                // 未执行模板工作薄
                TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook("//doc//Primary//Parameter//Parameter.cpt");
                // 获取报表参数并设置值,导出内置数据集时数据集会根据参数值查询出结果从而转为内置数据集
                Parameter[] parameters = workbook.getParameters();
                parameters[0].setValue("华东");
                // 定义parametermap用于执行报表,将执行后的结果工作薄保存为rworkBook
                java.util.Map parameterMap = new java.util.HashMap();
                for (int i = 0; i < parameters.length; i++) {
                    parameterMap.put(parameters[i].getName(), parameters[i]
                            .getValue());
                }
                // 定义输出流
                FileOutputStream outputStream;
    
                //原样导出excel2003
                outputStream = new FileOutputStream(new File("//Users//susie//Downloads//ExcelExport.xls"));
                ExcelExporter excel = new ExcelExporter();
                excel.setVersion(true);
                excel.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
    
                //原样导出excel2007
                outputStream = new FileOutputStream(new File("//Users//susie//Downloads//ExcelExport.xlsx"));
                StreamExcel2007Exporter excel1 = new StreamExcel2007Exporter();
                excel.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
    
                //分页导出excel2003
                outputStream = new FileOutputStream(new File("//Users//susie//Downloads//PageExcelExport.xls"));
                PageExcelExporter page = new PageExcelExporter(ReportUtils.getPaperSettingListFromWorkBook(workbook.execute(parameterMap,new WriteActor())));
                page.setVersion(true);
                page.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
    
                //分页导出excel2007
                outputStream = new FileOutputStream(new File("//Users//susie//Downloads//PageExcelExport.xlsx"));
                PageExcel2007Exporter page1 = new PageExcel2007Exporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook));
                page1.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
    
                //分页分sheet导出excel2003
                outputStream = new FileOutputStream(new File("//Users//susie//Downloads//PageSheetExcelExport.xls"));
                PageToSheetExcelExporter sheet = new PageToSheetExcelExporter(ReportUtils.getPaperSettingListFromWorkBook(workbook.execute(parameterMap,new WriteActor())));
                sheet.setVersion(true);
                sheet.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
    
                //分页分sheet导出excel2007
                outputStream = new FileOutputStream(new File("//Users//susie//Downloads//PageSheetExcelExport.xlsx"));
                PageToSheetExcel2007Exporter sheet1 = new PageToSheetExcel2007Exporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook));
                sheet1.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
    
                //大数据量导出
                outputStream = new FileOutputStream(new File("//Users//susie//Downloads//LargeExcelExport.zip"));
                LargeDataPageExcelExporter large = new LargeDataPageExcelExporter(ReportUtils.getPaperSettingListFromWorkBook(workbook.execute(parameterMap,new WriteActor())), true);
                //导出2007版outputStream = new FileOutputStream(new File("//Users//susie//Downloads//LargeExcelExport.xlsx")); excel LargeDataPageExcel2007Exporter large = new LargeDataPageExcel2007Exporter(ReportUtils.getPaperSettingListFromWorkBook(rworkbook), true);
                large.export(outputStream, workbook.execute(parameterMap,new WriteActor()));
    
                outputStream.close();
                module.stop();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    注:工程路径需要根据实际情况修改

    编译运行该代码后,就会在对应路径下生成不同格式的文件,这样就导出成功了,如下图:




    附件列表


    主题: 二次开发
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]