历史版本10 :Excel直接转成模板cpt 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 问题描述编辑

存在很多Excel文件,要将它们转成cpt模板,不想通过设计器手动一张张导入,希望用程序在后台批量转换。

2. 解决方案编辑

通过程序读取Excel文件转为模板TemplateWorkBook,然后把模板输出为cpt文件。

3. 示例编辑

3.1 读取Excel文件转为模板
TemplateWorkBook
File excelFile = new File("D:\\aa.xlsx"); // 获取EXCEL文件 FileInputStream a = new FileInputStream(excelFile);
3.2 再输出成cpt文件
2003版excel
TemplateWorkBook tpl = new ExcelReportImporter().generateWorkBookByStream(a); OutputStream outputStream = new FileOutputStream(new File("D:\\abc.cpt")); // 转换成cpt模板 ((WorkBook) tpl).export(outputStream);
2007版excel
TemplateWorkBook tpl = new Excel2007ReportImporter().generateWorkBookByStream(a); OutputStream outputStream = new FileOutputStream(new File("//Users//susie//Downloads//abc.cpt")); // 转换成cpt模板
3.3 准备excel文件
222
分别另存为aa.xls和aa.xlsx到对应的路径,下面的代码中需要根据实际excel文件存放的路径修改
3.4 2007版excel完整代码如下:
注:这里以xlsx代码为例,xls代码按照3.2进行修改,并修改import包即可
package com.fr.io; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.OutputStream; 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.data.impl.config.activator.RestrictionActivator; import com.fr.env.operator.CommonOperatorImpl; import com.fr.main.impl.WorkBook; import com.fr.io.importer.Excel2007ReportImporter; import com.fr.main.TemplateWorkBook; import com.fr.module.Module; import com.fr.module.tool.ActivatorToolBox; import com.fr.report.ReportActivator; import com.fr.report.module.ReportBaseActivator; import com.fr.store.StateServerActivator; import com.fr.workspace.simple.SimpleWork; public class ExcelToCpt { public static void main(String[] args) throws Exception { // 首先需要定义执行所在的环境,这样才能正确读取数据库信息 // 定义报表运行环境,用于执行报表 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(); File excelFile = new File("//Users//susie//Downloads//aa.xlsx"); // 获取EXCEL文件 FileInputStream a = new FileInputStream(excelFile); TemplateWorkBook tpl = new Excel2007ReportImporter().generateWorkBookByStream(a); OutputStream outputStream = new FileOutputStream(new File("//Users//susie//Downloads//abc.cpt")); // 转换成cpt模板 ((WorkBook) tpl).export(outputStream); outputStream.close(); module.stop(); } }
3.4 编译并运行

编译并运行该程序,就会在对应路径下导出abc.cpt模板文件,我们用设计器打开模板,可以看到,EXCEL里面的数据已经保存至模板文件里面了。

222