`

报表开发之批量导入导出excel

阅读更多

在日常使用报表过程中,会有这样一种情况,你将Excel表分发给各个员工,员工填完后,统一整理成多个Excel,你需要将这些数据,用报表的填报功能,提交录入到数据库中,这样一来可避免到服务器机房录数据的繁琐步骤,但是无论是批量导入和还是导出Excel,这对诸多报表软件或称集成报表功能的系统来说都是不容易的。

解决Excel导入的性能问题,可以利用FineReport开发的op=excel_submit功能,来实现不预览报表即可对填报表导入Excel。

根据报表工程的使用方式不同,批量导入Excel中权限控制方式有所不同。

报表工程一般有以下两种方式:

1、使用FineReport自主开发的数据决策系统op=fs使用报表工程;

2、将报表工程集成到自己的系统中。

1.1 直接使用op=fs

用户使用数据决策系统op=fs查看报表,那么所有的权限都是通过op=fs进行认证,用户也都是添加在op=fs中。

1.2 集成FR报表工程

用户将FR报表工程集成到自己的系统中,通过自己的系统查看报表,那么FR所有的权限都是通过报表平台管理op=fr_platform进行认证,详细请查权限管理。

除了批量导入,还有批量导出。一张报表可以根据不同的条件统计出不同的数据结果,有时希望将每一种条件下的结果都保存下来如导出成Excel文件至磁盘,可以在后台调用FineReport的导出接口ExcelExporter将每种情况下的结果批量保存起来。

实现的原理是遍历读取para.txt中的每组参数值,将该参数值组合传入模板进行计算,然后将结果导出excel,循环直至最后一条参数组合。

例如:

由于我们需要对模板输入参数对应的值才能够计算得到最终的结果,因此我们需要所有可能的参数值组合,可以来源于数据库中某个表,或者某个文件。这里我们假设所需的参数值组合保存在WebReport\WEB-INF\para.txt中。如下图新建para.txt

 

如果模板有两个参数格式如下:

 

批量导出程序,完整代码如下:

package com.fr.io;      
      
import java.io.BufferedReader;      
import java.io.File;      
import java.io.FileInputStream;      
import java.io.FileOutputStream;      
import java.io.InputStreamReader;      
import java.io.OutputStream;      
import java.util.Arrays;      
import com.fr.base.FRContext;      
import com.fr.general.ModuleContext;
import com.fr.dav.LocalEnv;  
  
import com.fr.io.exporter.ExcelExporter;  
import com.fr.main.TemplateWorkBook;    
import com.fr.main.workbook.ResultWorkBook;
import com.fr.report.module.EngineModule;
import com.fr.stable.StableUtils;  
import com.fr.stable.WriteActor;
     
       
 public class ExportBatch {      
     public static void main(String[] args) {      
         try {      
             // 定义报表运行环境,用于执行报表      
             String envpath = "D:\\FineReport_7.1\\WebReport\\WEB-INF";      
             FRContext.setCurrentEnv(new LocalEnv(envpath));    
     ModuleContext.startModule(EngineModule.class.getName());    
    // 读取环境下的模板文件    
    TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook(FRContext.getCurrentEnv(),    
        "doc\\Primary\\DetailReport\\Details.cpt");    
    // 读取用于保存的参数值的txt文件    
    File parafile = new File(envpath + "\\para.txt");    
    FileInputStream fileinputstream;    
    fileinputstream = new FileInputStream(parafile);    
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileinputstream));    
    // 定义保存参数的map,用于执行报表    
    java.util.Map paramap = new java.util.HashMap();    
    /*  
     * 遍历参数值所在txt文件,txt文件中参数保存形式为 para1,para2 江苏,陈羽 江苏,安娜 首先取出第一行保存参数名称  
     * 遍历每个参数组合,如para1=江苏、para2=陈羽,根据参数执行模板,并将结果导出excel excel文件名为名称+导出编号  
     */    
    // 读第一行,保存参数名称    
    String lineText = bufferedReader.readLine();    
    lineText = lineText.trim();    
    String[] paraname = StableUtils.splitString(lineText, ",");    
    System.out.println(Arrays.toString(paraname));    
    // 遍历每个参数组合,执行模板,导出结果    
    int number = 0;    
    while ((lineText = bufferedReader.readLine()) != null) {    
        lineText = lineText.trim();    
        String[] paravalue = StableUtils.splitString(lineText, ",");    
        for (int j = 0; j < paravalue.length; j++) {    
            paramap.put(paraname[j], paravalue[j]);    
        }    
        ResultWorkBook result = workbook.execute(paramap,new WriteActor());  
        OutputStream outputstream = new FileOutputStream(new File("E:\\ExportEg" + number + ".xls"));    
        ExcelExporter excelexporter = new ExcelExporter();    
        excelexporter.export(outputstream, result);    
        // 最后要清空一下参数map,用于下次计算    
        paramap.clear();    
        number++;    
        outputstream.close();  
        } 
    ModuleContext.stopModules();
    } catch (Exception e) {    
        e.printStackTrace();    
    }    
          }    
}

 

上述为示例程序,其中报表运行环境与模板名称等需要根据您实际环境进行修改。编译运行该程序您便可以得到结果,在E盘根目录下将生成3个Excel文件,如下

内容分别为

 

这样批量导出便成功了。

 

0
1
分享到:
评论
2 楼 masuweng 2016-08-05  
类不全啊.
1 楼 masuweng 2016-08-05  

相关推荐

    .Net Mvc之NPOI Excel数据导出和批量导入功能实现

    在我们的实践开发中我们经常会遇到很多关于报表问题的数据展示,当然了有报表肯定是少不了数据的导出和导入的一些功能的啦,我这个demo就是专门使用nopi第三方库对excel的数据批量导入和数据导出的相关功能实现。

    Spring框架实现Excel批量导入数据

    在数据管理系统中,添加大量数据,如果通过手动录入的话,相当费事费力。最近开发一款数据管理系统,所以我花了半天时间将该功能梳理出来。该资料将框架和其他功能都简化,主要实现该功能。

    Java实现Excel导入导出操作详解.pptx.pptx

    Java实现Excel导入导出广泛应用于数据分析、报表生成、数据备份等领域。通过Java程序,可以方便地读取和写入Excel文件,实现数据的快速处理和分析 Java实现Excel导入导出的技术要点。 Java实现Excel导入导出需要掌握...

    Excel百宝箱 9.0 破解版 批量导入图片等200种功能

    Excel百宝箱 9.0 破解版 批量导入图片等200种功能 Excel2007 Excel百宝箱2012是强大的制表插件,当安装百宝箱后,如果您使用Excel 2003,则将产生【百宝箱】菜单,包括100多个子菜单;如果您使用Excel 2007或者2010...

    SpreadJS -自动化报表实例

    通过自定制开发,可满足批量导入导出 Excel、填报暂存、多 sheet 填报和多级上报等业务需求。 类 Excel 报表设计 降低从本地到线上的数据迁移工作量 兼容 Excel 数据格式,提供高度类似 Excel 的使用体验,通过二次...

    spreadjs应用实例-计量检定

    通过自定制开发,可满足批量导入导出 Excel、填报暂存、多 sheet 填报和多级上报等业务需求。 类 Excel 报表设计 降低从本地到线上的数据迁移工作量 兼容 Excel 数据格式,提供高度类似 Excel 的使用体验,通过二次...

    罗刚君Excel无忧 v1.0.zip

    Excel插件罗刚君Excel无忧包含功能Excel报表批量合并/拆分功能、多文件批量查询/汇总功能、跨文件批量提取指定数据功能、批量导入/导出图片等功能,助您制表无忧。 插件支持Excel 2007、2010、2013、2016和2019,还...

    Excel图片百宝箱 v3.0.zip

    软件可用于批量处理Excel图片,功能强大, 能够实现包括建立图片目录、批量导入图片到单元格、批量导入图片并排版、批量导入图片到批注、删除所有图片、导出选区为图片、导出所有图形对象、导入Gif动画、导入Flash...

    基于SSM的医院体检管理系统源码+数据库

    由Dubbo+SSM框架实现,,包含导入导出excel,pdf,可视化运营报表,第三方云存储服务,短信服务等丰富功能 主要模块为预约检查项/组管理,预约设置模块,运营数据模块和用户预约模块 健康管理后台系统在进行体检套餐...

    机动车驾驶员档案管理系统

    本系统使用Visual C++6.0作为开发工具,使用SQL Server2000作为数据库服务器,利用ADO技术进行数据库连接,并基于COM组件完成excel文档的导入导出,简化了报表自动生成的流程。 摘要 I ABSTRACT II 目录 IV 第一章 ...

    可二次开发Extjs4.0通用后台管理系统源码完整大型项目ExtJS 4.2+Hibernate 4.1.7+SpringMVC

    5导入导出Excel数据,支持xlsx和xls文件。 6资源管理(菜单管理)。 7用户管理和部门管理。 8权限管理。不仅可管理各个功能模块的权限,也可以管理功能模块里的页面按钮权限 9报表统计。也可以嵌入其他报表工具插件...

    JAVA后台管理系统源码

    5、导入导出Excel数据,支持xlsx和xls文件。 6、资源管理(菜单管理)。 7、用户管理和部门管理。 8、权限管理。不仅可管理各个功能模块的权限,也可以管理功能模块里的页面按钮权限。 9、报表统计。也可以嵌入其他...

    Excel无忧插件 v1.0

    Excel无忧插件是一款简单强大的Excel辅助插件,软件支持Excel和WPS,支持简体、繁体和英文系统,安装之后可以帮助用户轻松在Excel表格内实现Excel报表批量合并/拆分、多文件批量查询/汇总、批量导入/导出图片等多大...

    Excel百宝箱8.0

    【报表分栏工具箱】【删除工资条恢复明细表】【制作工资条】【建立分页小计】【删除分页小计】【建立图片目录】【批量导入图片(精确匹配)】【批量导入图片(模糊匹配)】【批量导入图片到批注】【删除所有图片】...

    通达报表组件2009 3.0.0.12注册机

    3、开创导入导出Excel模板功能,之前利用MS Excel设计的模板、公式等直接可以导入到系统中来,最大限度地重用了以前的工作成果。 4、模板设计风格与MS Excel完全一致,因此使用过MS Excel的用户直接就可以使用系统...

    学校查询系统 培训学校管理系统

    6、录入学生信息(学生信息管理 &gt;&gt;录入学生信息或批量导入(注意:如批量导入,EXcEL表的格式和信息排列必需下载模版样表为例)。 7、成绩录入(学生成绩管理&gt;&gt;成绩录入或成绩导入(注意:如批量导入,EXcEL表的格式...

    毕设源码-VB+access教师考核管理系统(系统+论文+答辩PPT+摘要).rar

    5. **报表打印与导出**:方便地将考核结果以报表形式打印或导出为Excel、PDF等格式。 本系统采用VB作为前端开发工具,Access作为后端数据库,技术成熟且易于上手。同时,系统代码注释清晰,结构严谨,便于二次开发...

    excel 工具箱

    【批量导入图片(精确匹配)】:瞬间导入所有与选区字符同名的图片到单元格,可以自由设定图片的大小及格式,且全部统一对齐 【批量导入图片(模糊匹配)】:与上一工具基本一致,只是在确定图片名称时可以糊模匹配...

Global site tag (gtag.js) - Google Analytics