多次导入Excel

编辑
  • 文档创建者:印然
  • 浏览次数:8687次
  • 编辑次数:13次
  • 最近更新:Kevin-s 于 2019-06-20
  • 1. 描述

    如果有多张表样相同的 Excel 需要在线导入到模板,并提交至数据库中,那么该如何实现先将所有excel导入进来,然后再一次性提交呢?


    2. 思路

    FineReport 在线导入不支持一次性选择多个 Excel,一次只能选择一个 Excel,也不能将多个 Excel 中的数据在不提交入库的前提下导入到模板中,即如果在导入 Excel 之前,Web 页面里面有数据,导入E xcel 之后会覆盖之前的数据,那么我们这里就可以自定义一个 Excel 导入按钮,在点击该按钮的时候将上一次导入到模板中的数据进行提交,同时刷新页面,让页面恢复到原始的空白状态,并实现 Excel 导入操作,然后再点击导入按钮,导入下一个 Excel,以此类推。

    注:也可以使用新填报预览,实现多次导入 Excel,具体请看:新填报多次导入 Excel


    3. 示例

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



    3.1 模板准备

    以 Excel 导入行式报表 中的模板为例,打开%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject|\ExcelImport\ExcelImport_1.cpt,修改其表样,使其与 Excel 中的标题名保持一致,如下图:


    注:若单元格中插入了数据列,需要将数据设置改为“列表”,如下图所示:



    3.2 自定义导入按钮

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


    3.4 自定义事件编写

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

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

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

    JS 完整语句如下:

    //获取填报页面第一个控件所在的单元格的值 var value=contentPane.getCellValue(0,0,1); //如果第一个单元格的值不为空,则表示上一次已经导入过EXCEL,则需要先提交上一次数据,接着刷新页面,最后再弹出导入EXCEL选择框 if (value!="") { FR.Msg.confirm("提示", "是否提交上一次导入数据", function(result){ if(result){ _g('${sessionID}').writeReport(); contentPane.refreshAllSheets(); contentPane.importExcel(); } }); } //如果第一个单元格值为空,则表示这是第一次导入EXCEL,只需要弹出导入EXCEL选择框即可 else{ contentPane.importExcel(); }

    FR 内置提示框详情请查看 FR.MSg.


    3.5 效果查看

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


    已完成模板请查看%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject|\ExcelImport\ExcelImport_4.cpt

    在线查看示例效果请点击 ExcelImport_4.cpt


    4. 总结

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


    附件列表


    主题: 报表应用
    标签: 暂无标签 编辑/添加标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]