您的位置:首页 > 其它

如何利用API实现行式报表后台导入excel数据入库

2016-11-29 13:58 821 查看

润乾报表提供了excel导入页面后入库的功能,丰富了用户导入excel的方式。对于普通填报表,润乾报表提供了直接后台入库和导入页面入库的方式,那么在行式填报表中,如何实现后台导入excel入库呢?

用润乾报表提供的API接口,就可以完成这个功能。

下面是示例代码:

<%@ page contentType=”text/html;charset=GBK” %>

<%@ page import=”com.runqian.report4.usermodel.*”%>

<%@ page import=”com.runqian.base4.util.*”%>

<%@ page import=”com.runqian.report4.model.*”%>

<%@ page import=”com.runqian.report4.util.*”%>

<%@ page import=”com.runqian.report4.cache.CacheManager”%>

<%@ page import=”java.io.*”%>

<%@ page import=”com.runqian.report4.dataset.DataSet”%>

<%@ page import=”com.runqian.report4.dataset.SQLDataSetFactory”%>

<%@ page import=”com.runqian.report4.view.olap.OlapUtils”%>

<%@ page import=”com.runqian.report4.view.excel.ExcelReport”%>

<%@ page import=”java.sql.Connection”%>

<%@ page import=”java.sql.Driver”%>

<%@ page import=”java.sql.DriverManager”%>

<%@page import=”com.runqian.report4.ide.ExcelImporter”%>

<%@page import=”com.runqian.report4.usermodel.input.InputProperty”%>

<%@page import=”com.runqian.report4.input.DataSaver”%>

<%@page import=”com.runqian.report4.model.engine.ExtCellSet”%>

<%@page import=”com.runqian.report4.model.engine2.RowReport”%>

<%@page import=”com.runqian.report4.input.RowReportSaver”%>

<%@page import=”java.text.SimpleDateFormat”%>

<%@page import=”com.runqian.base4.resources.FormatUtils”%>

<%@page import=”java.util.Locale”%>

<%

//设置报表路径

String reportFile = “D:\\testupdate.raq”;

Context cxt = new Context();

ReportDefine rd = null;

try {

//读取报表模版定义

rd = (ReportDefine) ReportUtils.read(reportFile);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println(”报表读取完毕===================================”);

//计算报表

Engine engine = new Engine(rd, cxt);

IReport iReport = engine.calc();

//将计算完的报表转换成行式报表对象

RowReport rr = (RowReport)iReport;

//第几行是主扩展行

String did = rr.getDetailID( 1 );

//定义报表保存的参数

SimpleDateFormat dateF = new SimpleDateFormat( FormatUtils.getDateFormat( Locale.getDefault() ) );

SimpleDateFormat timeF = new SimpleDateFormat( FormatUtils.getTimeFormat( Locale.getDefault() ) );

SimpleDateFormat datetimeF = new SimpleDateFormat( FormatUtils.getDatetimeFormat( Locale.getDefault() ) );

//设置excel路径

String excelFile = “D:\\test1500.xls”;

//生成excel导入对象

ExcelImporter ei = new ExcelImporter(excelFile);

//得到excel中的第一个sheet的对象

IReport excelReport = ei.getReport(0);

//构造数据保存对象

RowReportSaver rowSaver = new RowReportSaver(rr, null, cxt);

//读入excel文件及其数据

//逐行逐列把excel数据写入填报表

for(int i=1;i<=excelReport.getRowCount();i++){

//先插入一行,这里是不定行导入excel数据

Area area = rr.insertDetail( did );

//循环取得excel单元格

for(int j=1;j<=iReport.getColCount();j++){

INormalCell iExcelCell=excelReport.getCell(i, (short)j);

if( iExcelCell == null ) continue;

String svalue = “”;

//得到单元格的值

Object value = iExcelCell.getValue();

if( value != null )

svalue = value.toString();

//把填报值保存到数据保存对象中

rowSaver.setCellInputValue( area.getBeginRow(), (short)j, svalue, dateF, timeF, datetimeF );

}

}

//执行保存

rowSaver.save();

out.print(”数据保存成功”);

%>

通过这样的方式,我们就可以利用API来对行式填报表进行后台数据直接入库的功能了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐