历史版本23 :Excel 导出的多种方式 返回文档
编辑时间:
内容长度:图片数:目录数:
修改原因:
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();
}
}
}
注:工程路径需要根据实际情况修改
编译运行该代码后,就会在对应路径下生成不同格式的文件,这样就导出成功了,如下图: