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

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

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

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

  1. // 将未执行模板工作薄导出为内置数据集模板
  2. outputStream = new FileOutputStream(new File("E:\\EmbExport.cpt"));
  3. EmbeddedTableDataExporter templateExporter = new EmbeddedTableDataExporter();
  4. templateExporter.export(outputStream, workbook);

2、导出模板文件

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

  1. // 将模板工作薄导出模板文件,在导出前您可以编辑导入的模板工作薄,可参考报表调用章节
  2. outputStream = new FileOutputStream(new File("E:\\TmpExport.cpt"));
  3. ((WorkBook) workbook).export(outputStream);

3、导出Excel文件

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

  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文件

  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文件

  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文件

  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文件

  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文件

  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文件

  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等文件,会产生很多进程,通过下面的方案释放进程。在导出完成之后添加下面代码:

  1. outputStream.close();
  2. ModuleContext.stopModules();

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

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

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

报表开发导出各种格式文件的API的更多相关文章

  1. 导出CSV格式文件,用Excel打开乱码的解决办法

    导出CSV格式文件,用Excel打开乱码的解决办法 1.治标不治本的办法 将导出CSV数据文件用记事本打开,然后另存为"ANSI"编码格式,再用Excel打开,乱码解决. 但是,这 ...

  2. Powerdesigner 导出Excel格式数据字典 导出Excel格式文件

    版权声明:本文为博主原创文章,转载请注明出处; 网上我也看到了很多的Powerdesigner 导出方法,因为Powerdesigner 提供了部分VBA功能,所以让我用代码导出Excel格式文件得以 ...

  3. 使用PHPExcel导入导出excel格式文件

    使用PHPExcel导入导出excel格式文件  作者:zccst  因为导出使用较多,以下是导出实现过程.  第一步,将PHPExcel的源码拷贝到项目的lib下  文件包含:PHPExcel.ph ...

  4. java导出csv格式文件

    导出csv格式文件的本质是导出以逗号为分隔的文本数据 import java.io.BufferedWriter; import java.io.File; import java.io.FileIn ...

  5. asp.net NPOI导出xlsx格式文件,打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”

    NPOI导出xlsx格式文件,会出现如下情况: 点击“是”: 导出代码如下: /// <summary> /// 将datatable数据写入excel并下载 /// </summa ...

  6. JSP页面导出PDF格式文件

    JSP页面导出PDF格式文件基本在前端页面可以全部完成 <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/ ...

  7. confluence导出PDF格式文件不显示中文解决

    由于confluence导出PDF格式文件需要应用字体文件,下载字体文件在confluence管理员界面安装即可. 我这里使用从simhei.ttf楷体,可以从windowns主机里下载(c:/win ...

  8. OAF_文件系列2_实现OAF导出CSV格式文件ExportButton(案例)

    20150727 Created By BaoXinjian

  9. java导出json格式文件

    生成json文件代码: import java.io.File; import java.io.FileWriter; import java.io.Writer; public class Crea ...

随机推荐

  1. asp.net 301重定向代码

    /// <summary> ///重定向代码 /// </summary> /// <param name="sender"></para ...

  2. Android Studio创建AVD

    Android Studio是专门为Android开发设计的IDE,比Eclipse开发Android更加方便.快捷. 安装Android Studio以后,想运行AVD,出现了下面的错误: 提示没有 ...

  3. [Architecture] 系统架构正交分解法

    [Architecture] 系统架构正交分解法 前言 随着企业成长,支持企业业务的软件,也会越来越庞大与复杂.当系统复杂到一定程度,开发人员会发现很多系统架构的设计细节,很难有条理.有组织的用一张大 ...

  4. UML 用例图、顺序图、状态图、类图、包图、协作图、流程图

    ​用例图.顺序图.状态图.类图.包图.协作图 面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling La ...

  5. jquery中 $(document).ready()和window.onload的区别

    1.执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行. $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. 2.编写个数不同 ...

  6. Web API初探

    前几天有位同事说web api中的接口参数为对象的时候不好接收,具体什么方式我忘记了,虽然本人以前并没有接触过这方面的知识,但是据说和MVC差不多的,今天小小的研究一下,我想应该是可以的. 直接新建一 ...

  7. [Javascript]利用当前时间生成yyyymmddhhmmss这样的字符串

    function pad2(n) { return n < 10 ? '0' + n : n } function generateTimeReqestNumber() { var date = ...

  8. python的基础知识

    Python文件命名时不要有中文,不然在dos中不能执行 D:\Program Files\Py>Python hellyy.pyYear:2016Month(1-12):1Day(1-31): ...

  9. 初识android中的动画

    动画效果可以大大提高界面的交互效果,因此,动画在移动开发中的应用场景较为普遍.掌握基本的动画效果在成熟的软件开发中不可或缺.除此之外,用户对于动画的接受程度远高于文字和图片,利用动画效果可以加深用户对 ...

  10. 生成的API分析文件太大。我们无法在交付前验证您的API使用信息。这只是通知信息。

    这次使用了APICloud平台来开发移动APP, 发布的时候在api控制台云编译成ipa后,这次使用apple提供的Application Loader工具提交apa文件到iTunes上去,提交结束的 ...