package com.fr.io; 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.env.operator.CommonOperatorImpl; import com.fr.io.exporter.ExcelExporter; 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.RestrictionActivator; import com.fr.report.module.ReportBaseActivator; import com.fr.stable.StableUtils; import com.fr.stable.WriteActor; import com.fr.store.StateServerActivator; import com.fr.workspace.simple.SimpleWork; 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; public class ExportBatch { public static void main(String[] args) { try { // 定义报表运行环境,用于执行报表 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(); // 读取环境下的模板文件 TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook( "//doc//Primary//Parameter//Parameter.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("//Users//susie//Downloads//ExportEg" + number + ".xls")); ExcelExporter excelexporter = new ExcelExporter(); excelexporter.export(outputstream, result); // 最后要清空一下参数map,用于下次计算 paramap.clear(); number++; outputstream.close(); } module.stop(); } catch (Exception e) { e.printStackTrace(); } } }