报表开发导出各种格式文件的API

文件输出的多样性,准确性和稳定性对于我们常用的报表软件来说很重要。报表的输入是指从报表的模板文件(XML格式的)创建WorkBook对象,输出则指将报表保存为各种格式文件,比如Pdf、Excel、Word这种常见的文件格式,比如FineReport还支持cpt、Svg、Csv、Image(包含png、 jpg、gif、 bmp、wbmp)等多种文件格式。

         因为常常会碰到报表的开发工作,这里总结了几种格式文件导出的API。

1、导出成内置数据集模板

导出成内置数据集模板,就是将原模板的数据源根据参数条件查询出结果并转为内置数据集,然后把模板导出,不需要对原模板进行计算(数据列扩展、公式计算等)。

 

[java]   view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. // 将未执行模板工作薄导出为内置数据集模板  
  2.             outputStream = new FileOutputStream(new File("E:\\EmbExport.cpt"));  
  3.             EmbeddedTableDataExporter templateExporter = new EmbeddedTableDataExporter();  
  4.             templateExporter.export(outputStream, workbook);  

 

 

2、导出模板文件

我们可以将原模板通过程序编辑后再次导出为模板文件,或者将某一路径下的模板保存至另一路径下。

[java]   view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. // 将模板工作薄导出模板文件,在导出前您可以编辑导入的模板工作薄,可参考报表调用章节  
  2.             outputStream = new FileOutputStream(new File("E:\\TmpExport.cpt"));  
  3.             ((WorkBook) workbook).export(outputStream);  

 

3、导出Excel文件

模板工作薄WorkBook执行后为结果工作薄ResultWorkBook,我们可以把计算后的结果导出成Excel文件。

[java]   view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. // 将结果工作薄导出为Excel文件  
  2.             outputStream = new FileOutputStream(new File("E:\\ExcelExport.xls"));  
  3.             ExcelExporter ExcelExport = new ExcelExporter();  
  4.             ExcelExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));  

 

4、导出Word文件

[java]   view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. // 将结果工作薄导出为Word文件  
  2.             outputStream = new FileOutputStream(new File("E:\\WordExport.doc"));  
  3.             WordExporter WordExport = new WordExporter();  
  4.             WordExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));  

5、导出Pdf文件

 

[java]   view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. // 将结果工作薄导出为Pdf文件  
  2.                             outputStream = new FileOutputStream(newFile("E:\\PdfExport.pdf"));  
  3.                             PDFExporter PdfExport = newPDFExporter();  
  4.                             PdfExport.export(outputStream,workbook.execute(parameterMap,new WriteActor()));  

 

6、导出Txt文件

[java]   view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. // 将结果工作薄导出为Txt文件(txt文件本身不支持表格、图表等,被导出模板一般为明细表)  
  2.             outputStream = new FileOutputStream(new File("E:\\TxtExport.txt"));<pre code_snippet_id="1709587" snippet_file_name="blog_20160606_6_1825679" name="code" class="java"></pre>  

7、导出Csv文件

 

[java]   view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. // 将结果工作薄导出为Csv文件  
  2.             outputStream = new FileOutputStream(new File("E:\\CsvExport.csv"));  
  3.             CSVExporter CsvExport = new CSVExporter();  
  4.             CsvExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));  

 

8、导出Svg文件

[java]   view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. //将结果工作薄导出为SVG文件    
  2.             outputStream = new FileOutputStream(new File("D:\\SvgExport.svg"));    
  3.             SVGExporter SvgExport = new SVGExporter();    
  4.             SvgExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));  

9、导出Image文件

[java]   view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. //将结果工作薄导出为image文件    
  2.             outputStream = new FileOutputStream(new File("D:\\PngExport.png"));    
  3.             ImageExporter ImageExport = new ImageExporter();    
  4.             ImageExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));  

10、释放进程

通过导出API在后台导出excel等文件,会产生很多进程,通过下面的方案释放进程。在导出完成之后添加下面代码:

[java]   view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. outputStream.close();  
  2. ModuleContext.stopModules();  

例如,一个完整的可执行代码:

[java]   view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.fr.io;    
  2.     
  3. import java.io.File;    
  4. import java.io.FileOutputStream;    
  5. import com.fr.base.FRContext;   
  6. import com.fr.general.ModuleContext;  
  7. import com.fr.base.Parameter;  
  8. import com.fr.dav.LocalEnv;  
  9. import com.fr.io.exporter.CSVExporter;  
  10. import com.fr.io.exporter.EmbeddedTableDataExporter;  
  11. import com.fr.io.exporter.Excel2007Exporter;  
  12. import com.fr.io.exporter.ExcelExporter;  
  13. import com.fr.io.exporter.PDFExporter;  
  14. import com.fr.io.exporter.TextExporter;  
  15. import com.fr.io.exporter.WordExporter;  
  16. import com.fr.io.exporter.SVGExporter;  
  17. import com.fr.io.exporter.ImageExporter;  
  18. import com.fr.main.impl.WorkBook;  
  19. import com.fr.main.workbook.ResultWorkBook;  
  20. import com.fr.report.module.EngineModule;  
  21. import com.fr.stable.WriteActor;  
  22.   
  23.     
  24. public class ExportApi {    
  25.     public static void main(String[] args) {    
  26.         // 定义报表运行环境,才能执行报表    
  27.         String envpath = "D:\\FineReport_8.0\\WebReport\\WEB-INF";    
  28.         FRContext.setCurrentEnv(new LocalEnv(envpath));    
  29.         ModuleContext.startModule(EngineModule.class.getName());   
  30.         ResultWorkBook rworkbook = null;    
  31.         try {    
  32.             // 未执行模板工作薄    
  33.             WorkBook workbook = (WorkBook) TemplateWorkBookIO    
  34.                     .readTemplateWorkBook(FRContext.getCurrentEnv(),    
  35.                             "\\doc\\Primary\\Parameter\\Parameter.cpt");    
  36.             // 获取报表参数并设置值,导出内置数据集时数据集会根据参数值查询出结果从而转为内置数据集    
  37.             Parameter[] parameters = workbook.getParameters();    
  38.             parameters[0].setValue("华东");    
  39.             // 定义parametermap用于执行报表,将执行后的结果工作薄保存为rworkBook    
  40.             java.util.Map parameterMap = new java.util.HashMap();    
  41.             for (int i = 0; i < parameters.length; i++) {    
  42.                 parameterMap.put(parameters[i].getName(), parameters[i]    
  43.                         .getValue());    
  44.             }    
  45.             // 定义输出流    
  46.             FileOutputStream outputStream;    
  47.             // 将未执行模板工作薄导出为内置数据集模板    
  48.             outputStream = new FileOutputStream(new File("D:\\EmbExport.cpt"));    
  49.             EmbeddedTableDataExporter templateExporter = new EmbeddedTableDataExporter();    
  50.             templateExporter.export(outputStream, workbook);    
  51.             // 将模板工作薄导出模板文件,在导出前您可以编辑导入的模板工作薄,可参考报表调用章节    
  52.             outputStream = new FileOutputStream(new File("D:\\TmpExport.cpt"));    
  53.             ((WorkBook) workbook).export(outputStream);  
  54.             // 将结果工作薄导出为2003Excel文件    
  55.             outputStream = new FileOutputStream(new File("D:\\ExcelExport.xls"));    
  56.             ExcelExporter ExcelExport = new ExcelExporter();    
  57.             ExcelExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));     
  58.             // 将结果工作薄导出为Word文件    
  59.             outputStream = new FileOutputStream(new File("D:\\WordExport.doc"));    
  60.             WordExporter WordExport = new WordExporter();    
  61.             WordExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));    
  62.             // 将结果工作薄导出为Pdf文件    
  63.             outputStream = new FileOutputStream(new File("D:\\PdfExport.pdf"));    
  64.             PDFExporter PdfExport = new PDFExporter();    
  65.             PdfExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));    
  66.             // 将结果工作薄导出为Txt文件(txt文件本身不支持表格、图表等,被导出模板一般为明细表)    
  67.             outputStream = new FileOutputStream(new File("D:\\TxtExport.txt"));    
  68.             TextExporter TxtExport = new TextExporter();    
  69.             TxtExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));    
  70.             // 将结果工作薄导出为Csv文件    
  71.             outputStream = new FileOutputStream(new File("D:\\CsvExport.csv"));    
  72.             CSVExporter CsvExport = new CSVExporter();    
  73.             CsvExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));              
  74.             //将结果工作薄导出为SVG文件    
  75.             outputStream = new FileOutputStream(new File("D:\\SvgExport.svg"));    
  76.             SVGExporter SvgExport = new SVGExporter();    
  77.             SvgExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));             
  78.             //将结果工作薄导出为image文件    
  79.             outputStream = new FileOutputStream(new File("D:\\PngExport.png"));    
  80.             ImageExporter ImageExport = new ImageExporter();    
  81.             ImageExport.export(outputStream, workbook.execute(parameterMap,new WriteActor()));                        
  82.             outputStream.close();    
  83.             ModuleContext.stopModules();  
  84.         } catch (Exception e) {    
  85.             e.printStackTrace();    
  86.         }    
  87.     }    
  88. }  

编译运行该代码后,就会在E盘下生成不同格式的文件,这样就导出成功了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ireport开发文档内容目录(.doc格式):由于上传文件不能超过10M,只好分两次上传,不便之处请见谅。<br>Giulio Toffoli 1<br>1 序言 6<br>什么是iReport? 6<br>功能特点: 7<br>iReport 社区: 7<br>鸣谢: 8<br>2 入门 8<br>必要条件: 8<br>下载: 9<br>编译iReport: 9<br>基本的配置: 9<br>创建JDBC连接: 12<br>第一个报表: 13<br>命令行选项: 17<br>3 JasperReports基础概念 17<br>JasperReports 17<br>报表生命周期: 18<br>Jrxml源代码和jasper文件: 18<br>数据源和打印格式: 22<br>版本兼容性: 23<br>表达式: 24<br>一个简单的程序: 25<br>4 报表结构 26<br>Bands 26<br>Title 27<br>Page header 27<br>Column header 27<br>Group header 28<br>Detail 28<br>Group footer 28<br>Column footer 28<br>Page footer 28<br>Last Page footer 28<br>Summary 29<br>Background 29<br>报表属性: 29<br>列 30<br>高级选项: 32<br>脚本: 32<br>更多… 33<br>Title on a new page选项: 33<br>Summary on a new page选项: 35<br>Floating column footer 选项: 35<br>打印顺序: 35<br>无数据打印(如果没有数据时): 36<br>i18n: 36<br>Resource Bundle Base name 36<br>XML源文件的编码设置: 37<br>5 报表元素 37<br>选择并插入元素到报表中: 37<br>布置和元素顺序 40<br>使用元素树管理元素: 43<br>基本属性: 43<br>线 46<br>矩形 46<br>椭圆 47<br>图象 47<br>文本元素 50<br>静态文本 51<br>文本域 51<br>子报表 55<br>专用元素 56<br>图表 56<br>条形码 56<br>超连接 58<br>Reference 59<br>LocalAnchor 59<br>LocalPage 59<br>RemoteAnchor 59<br>RemotePage 59<br>6 字体 59<br>字体 59<br>扩展字体 60<br>编码 61<br>使用Unicode字符 61<br>报表字体 61<br>7 字段,参数和变量 62<br>字段 62<br>SQL查询的字段注册 63<br>JavaBean的字段注册 64<br>JRExtendedBeanDataSource的字段注册 65<br>字段和文本域 65<br>参数 66<br>在查询中使用参数 67<br>使用程序传递参数 67<br>内置参数 69<br>变量 69<br>内置变量 71<br>8 Bands and groups 71<br>Bands 71<br>Groups 72<br>9 Subreport 77<br>创建子报表 78<br>连接子报表到父报表 78<br>参数的通道 78<br>指定数据源 79<br>指定子报表 80<br>一步一步举例 80<br>返回参数 86<br>10 数据源 87<br>iReport中的数据源 88<br>JDBC连接 89<br>ClassNotFoundException 91<br>URL不正确 91<br>连接参数不正确 91<br>使用JDBC连接 91<br>字段注册 92<br>JRDataSource接口 93<br>JavaBean作为数据源 93<br>JavaBean的一个字段作为数据源 95<br>XML数据源 96<br>字段的注册 98<br>XML和子报表 100<br>CSV数据源 104<br>字段的注册 105<br>JREmptyDataSource 105<br>实现一个新的JRDataSource 106<br>用iReport实现个性化的JRDataSource 108<br>JavaBean Extended数据源 110<br>11 国际化 111<br>Resource Bundle Base Name 111<br>恢复本地化字符串 113<br>格式化消息 114<br>配置本地化报表 114<br>12 脚本 115<br>JRAbstractScriptlet类 115<br>iReport处理脚本 117<br>用脚本部署报表 118<br>13 模板 119<br>模版结构: 119<br>使用通用模板 121<br>14 图表 123<br>创建一个简单的图表 123<br>级Series 128<br>自动级 129<br>手动级 130<br>图表类型和属性 132<br>饼图 133<br>3D饼图 133<br>柱状图 134<br>3D柱状图 136<br>线图 136<br>区域图 137<br>15 插件和附加工具 137<br>插件结构XML文件 138<br>it.businesslogic.ireport.plugin.IReportPlugin类 139<br>大型编译器插件 142<br>文本向导插件 144<br>16 常规问题解决方案 145<br>打印百分比 145<br>计算组的发生数 146<br>分离detail 148<br>插入一个页 149<br>交叉报表 152<br>使用多重连接找回数据 152<br>如何使用存储过程 153<br><br>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值