很多人在开发报表的时候会遇到将多张表样相同的excel导入到模板,然后提交至数据库中。但问题是很多情况,在线导入不支持一次性选择多个excel,一次只能选择一个excel,也不能将多个excel中的数据在不提交入库的前提下导入到模板中,即如果在导入excel之前,web页面里面有数据,导入excel之后会覆盖之前的数据。

那这样的问题是不是无法解决呢?

解决的思路是利用FineReport自定义一个excel导入按钮,在点击该按钮的时候将上一次导入到模板中的数据进行提交,同时刷新页面,让页面恢复到原始的空白状态,并实现excel导入操作,然后再点击导入按钮,导入下一个excel,以此类推,这样在操作上就会简单很多。

比如将下面2张表样相同的excel导入到FineReport模板中:

1.修改其表样,使其与excel中的标题名保持一致,如下图:

2.报表填报属性修改

修改报表填报属性中列和数据库中列的对应,这里只需要修改类别ID对应的值,修改为map(C2, "ds2", 2, 1)。

3.自定义导入按钮

点击模板>模板web属性>填报页面设置,双击工具栏中的自定义按钮,将该按钮添加到顶部工具栏中,同时删除内置的导入Excel按钮和提交按钮,如下图:


 4.自定义事件编写

在解决思路中描述了自定义按钮需要执行的操作为:在点击按钮的时候将上一次导入到模板中的数据进行提交,同时刷新页面,让页面恢复到原始的空白状态,并实现excel导入操作。

在工具栏编辑界面,选中自定义按钮,点击自定义事件,如下图:

在JavaScript脚本中写下js语句,如下图:

var value=contentPane.getCellValue(0,1,2);
if (value!="") {
    FR.Msg.confirm("提示", "是否提交上一次导入数据", function(result){
            if(result){
            _g('${sessionID}').writeReport();
            contentPane.refreshAllSheets();
            contentPane.importExcel();
        }
        });
}
else{
    contentPane.importExcel();
    }  

点击填报预览,点击导入Excel这个自定义按钮,选择第一个需要导入的Excel,然后再点击第二个需要导入的Excel,页面会提示是否提交上一次导入数据,点击确定,则会将上一次导入数据提交至数据库,然后再弹出文件选择框,这时就可以选择第二个Excel,以此类推。

要提醒的是,在利用此工具填报报表在线多次导入Excel时只支持空白模板的导入,即填报模板中不能有原始数据存在;在线多次导入Excel支持各种样式的填报报表,不仅仅局限于行式填报报表,但是如果是非行式填报报表,报表的控件位置需要与Excel中的数据位置保持一致,行式填报报表则需要保持标题名一致。

最新文章

  1. [Android Tips] 24. Gradle listing project dependencies
  2. 使用java连接sqlserver2008 R2/sqlserver2008
  3. android中的MVP模式
  4. SQL删除重复数据
  5. windows phone 7 中怎样定义和使用资源(Resource)
  6. php扩展redis,编译安装redis服务
  7. VB的try语句,异常处理
  8. selenium 回放时遇到的问题
  9. poj 1985 Cow Marathon 树的直径
  10. linux中的设备名称和设备号
  11. gulp使用2-gulp-less及watch和错误提示
  12. js构建函数优秀案例
  13. linux 远程复制 scp
  14. 设计模式のIOC(控制反转)
  15. NOIP模拟赛10 题解
  16. 小白学Docker之基础篇
  17. ES脑裂问题
  18. pytorch之dataloader深入剖析
  19. Android O 正式版新功能
  20. linux ln链接详解

热门文章

  1. php中用GD绘制折线图
  2. 采花 bzoj 2743
  3. 【转】窗口之间的主从关系与Z-Order
  4. 14、ASP.NET MVC入门到精通——Ajax
  5. sharepoint2013的审核日志的时间区域设置
  6. DevExpress TreeList使用心得
  7. Android开发学习——应用安装过程
  8. 【代码笔记】iOS-图片手势,上传照片
  9. 【代码笔记】iOS-通过颜色来生成一个纯色图片
  10. 【iOS】Alamofire库在iOS7下设置Head无效的问题