`

报表开发之批量导入导出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  

相关推荐

    POI批量导入导出

    在批量导入导出过程中,POI允许程序创建、修改和保存Excel文件,包括设置工作表、单元格的各种属性。例如,可以创建新的工作簿,添加工作表,设定单元格的值,设置单元格样式,甚至处理公式和图表。这使得Java应用...

    Excel数据批量导入与Excel文件的导出

    导出Excel文件主要是为了保存或分享数据,或与其他应用程序兼容。主要的导出方式有: 1. **另存为**:最基础的方式是使用“文件”菜单的“另存为”选项,可以选择不同的文件格式,如Excel工作簿(.xlsx)、PDF、...

    php导入导出Excel

    **MySQL导入导出Excel** 1. **导出MySQL到Excel**:先通过SQL查询获取数据库中的数据,然后用PHP将数据写入Excel文件,过程类似于上述的导出步骤。 2. **导入Excel到MySQL**:上传Excel文件,读取数据,然后批量...

    notes导入导出excel

    - **应用场景**: 这是实现数据导入导出的关键步骤之一。通过Excel Application对象,我们可以操作Excel文件,包括打开、关闭、读写等操作。 ##### 5. 导出数据到Excel ```vb excelFileName=excelSave....

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

    本教程将详细讲解如何利用Spring框架实现Excel数据的批量导入,以提高数据录入效率。 首先,我们需要了解Excel文件的结构。Excel是一种常用的电子表格软件,它的数据通常存储在工作簿(Workbook)中,每个工作簿...

    数据导入导出Excel

    在IT行业中,数据导入导出Excel是一项常见的任务,特别是在数据分析、报表生成以及系统间的数据交换等领域。本项目可能提供了一种实用的方法来处理这类需求。下面将详细解释相关的知识点。 首先,我们要理解什么是...

    SSM框架利用poi导入导出Excel文件 demo

    在本示例"SSM框架利用poi导入导出Excel文件 demo"中,我们将探讨如何在SSM项目中使用Apache POI库来实现Excel文件的导入与导出功能。 Apache POI是一个流行的开源库,它允许开发者在Java应用程序中创建、修改和显示...

    Excel插件,一键自动导入导出处理图片,批量处理Excel

    在描述中提到的一键自动导入导出处理图片功能,是指通过插件实现快速批量导入多张图片到Excel工作簿,并且能够自定义导入方式,如图片大小调整、位置设定等。此外,该插件还能一键导出Excel内的图片,方便在其他地方...

    水晶报表批量导出同一EXCEL的不同工作表

    在处理Excel数据时,水晶报表提供了高级的功能,如批量导出和工作表操作。以下是对标题和描述中涉及知识点的详细说明: 1. **批量导出到Excel**: 水晶报表可以批量将多个报表导出为Excel格式。这通常涉及到报表...

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

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

    POI实现Excel导入导出并附带加载进度条

    在Java开发中,处理Excel数据是一项常见的任务,尤其是在数据分析、报表生成或批量数据操作的场景下。Apache POI是一个强大的库,它允许开发者使用Java来读取、写入和修改Microsoft Office格式的文件,包括Excel(....

    ASP导入导出EXCEL到ACC

    在标题"ASP导入导出EXCEL到ACC"中,提到的主要知识点是ASP如何与Microsoft Excel和Access数据库进行数据交互。这通常涉及到数据的导入与导出操作,以实现数据的迁移、分析或存储。 首先,让我们深入了解一下ASP与...

    poi 导入导出Excel相关jar包

    在实际项目中,为了简化POI的使用,通常会封装一些工具类或者服务,提供简单的接口供其他模块调用,如批量导入数据到Excel、导出特定格式的报表等。同时,需要注意的是,处理大量数据时,由于内存占用问题,可能需要...

    基于labview与excel之间的数据导入导出

    【基于LabVIEW与Excel之间的数据导入导出】 在测试与测量领域,数据处理是一项关键任务,而LabVIEW(Laboratory Virtual Instrument Engineering Workbench)作为一款强大的图形化编程环境,经常被用于开发复杂的...

    poi导入导出Excel

    标题中的“poi导入导出Excel”指的是Apache POI库在Java中用于处理Microsoft Office文档,特别是Excel文件的导入和导出功能。Apache POI是一个开源项目,它允许开发者使用Java来创建、修改和显示Microsoft Office...

    spring boot+mybatis plus+easy poi实现数据库导出成excel和excel导入到数据库.zip

    在实际应用中,这种数据导入导出功能广泛应用于数据迁移、数据分析、报表生成等场景。通过Spring Boot的微服务架构,MyBatis Plus的高效数据操作,以及EasyPoi的Excel处理能力,开发者可以轻松地实现与Excel文件的...

    Access批量导出Excel

    "Access批量导出Excel"是一个功能,它允许用户将Access数据库中的多个表一次性导出到Excel工作簿,便于进一步的数据处理和分析。 在Access中批量导出Excel,首先需要了解Access的基本操作,包括创建和管理表、查询...

    基于NPOI导入导出Excel文件.rar

    通过这种方式,开发者可以方便地进行大量数据的导入导出操作,提高工作效率。 1. **C#编程语言**:C#是.NET框架的基础,是一种面向对象的编程语言,广泛应用于开发Windows桌面应用、Web应用和移动应用等。在这个...

    NPOI导入导出excel文档

    在实际项目中,NPOI常用于数据导入导出场景,比如从数据库中读取数据生成Excel报表,或者让用户上传Excel文件并将数据批量导入数据库。通过NPOI,你可以实现高度定制化的Excel处理,满足各种业务需求。 在提供的...

    excel通过配置实现导入导出和校验

    7. **性能优化**:大量数据的导入导出可能对系统性能产生影响,因此在设计时需要考虑批量处理、多线程等优化手段,以提高处理速度。 综上所述,通过配置文件实现Excel的导入导出和校验是一种高效且灵活的解决方案,...

Global site tag (gtag.js) - Google Analytics