图表制作软件FineReport教程:[1]Excel导入
对于行式填报表的在线导入Excel,在6.5.5之前版本前需要和Excel数据复制到填报单元格一样,在导入Excel前手动增加足够的行数才能进行导入;从7.0版本开始,FR对此功能进行了改进,在导入Excel时,会根据Excel中的记录数自动扩展出需要的行数,下面就通过图表制作软件FineReport来介绍一下。
工具/原料
图表制作软件FineReport7.1.1
大小:148.2M 适用平台:windows/linux
根据标题匹配
1、模板沼敫裣秤准备打开模板%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Spec足毂忍珩ialSubject|\ExcelImport\ExcelImport_1.cpt,修改如下图,删除左方和下方的空白行,将产品名称和类别列名称修改为产品和类别ID,与excel不一样,同时更换类别和供应商列的位置,再为每个单元格添加控件,这里添加文本控件:注:如果不想添加控件,可以设置不按照控件导入,但是这里是导入不定行,不论是否根据控件导入,必须保证左父格是可扩展的。
![图表制作软件FineReport教程:[1]Excel导入](https://exp-picture.cdn.bcebos.com/58021a0148fe1e42c2f2f062c2299a883813032d.jpg)
4、不根据标题匹配FineReport Excel导入不定行默认首先要根据标题匹配,如果标题能够匹配2个或2个以上,则无需再执行根据醐蛑臀谁位置匹配,但是如果在导入数据的时候希望根据位置匹配,但是标题又能匹配2个或2个以上,此时,如果使用默认设置,将无法根据位置匹配。那么,我们可以通过修改配置文件,关闭使用标题匹配这个功能,即直接使用位置匹配。
5、配置文件准备打开%FR_HOME%\WebReport\WEB-INF\resources下面的customconfig.xml文件,如果没有该文件,则复制config.xml至该文件夹中,并重命名为customconfig.xml,如下图:
![图表制作软件FineReport教程:[1]Excel导入](https://exp-picture.cdn.bcebos.com/e57a258602214f573ccfa708732064fb970b732d.jpg)
根据位置匹配
1、描述Excel导入行式报表根据位醅呓择锗置匹配是指,Excel导入进来的时候需要导入数据的单元格从第几行第几列开始,那么Excel中数据就从第几行第几列开始,无关于标烙疋艘烯题名称,只跟位置有关系。如下图,可以看到Excel中的列标题与FineReport模板的列标题完全不一致,但是位置却保持一致,FineReport模板中导入数据的单元格从B3开始,那么导入Excel中,从B3开始的数据就被导进来了:
![图表制作软件FineReport教程:[1]Excel导入](https://exp-picture.cdn.bcebos.com/e1390a31dfb6326c97ff6d7c89532f632285602d.jpg)
4、报表填报属性豹肉钕舞设置在报表填报属性中,只需要将第一行单元格与数据表的数据列进行绑定即可。该例中,Excel中的原始数据供应商和类别拎枋辏话都是具体的名字,若用户希望Excel导入的是名字,但实际入库的是ID怎么办呢?此时可以在报表填报属性中使用map函数转换,以下具体介绍。定义map函数需要的数据集增加数据集ds1,SQL语句为:SELECT * FROM [供应商],查询出供应商ID与供应商名字的对应关系;再增加数据集ds2,SQL语句为:SELECT * FROM [产品类别],查询出产品类别ID与类别名字的对应关系。报表填报属性中使用map函数Excel导入的是名字,使用map函数转换,如下图
![图表制作软件FineReport教程:[1]Excel导入](https://exp-picture.cdn.bcebos.com/3fc72e486143d7d498a8f0587da75f0f832b502d.jpg)
Excel导入固定行
1、描述Excel导入固定行就是指FineReport模板导入数据单元格是不可扩展的,导入的Excel行数与模板中设置的导入数据的单元格行数一致,如下图:
![图表制作软件FineReport教程:[1]Excel导入](https://exp-picture.cdn.bcebos.com/8db0c6a726334884107abf9fddee7b7f870e452d.jpg)
3、填报工具栏设置默认填报工具栏是没有导入Excel按钮的,点击模板>模板web属性>填报页面设置,为该模板单独设置,勾选使用工具栏,为该报表单独设置工具栏,清空工具栏,然后在按钮面板中双击提交按钮和导入excel按钮,将这两个按钮添加到顶部工具栏中,如下图:
![图表制作软件FineReport教程:[1]Excel导入](https://exp-picture.cdn.bcebos.com/3b8fb4d7726b0ce28f7ec0bcef781423bfb9b62d.jpg)
Excel双向导入
1、描述Excel双向导入是指标题行列是从单元格扩展得到的,并将导入数据的单元格也是可扩展的,如下图所示效果,标题字段通过横向扩展得到,导入数据的单元格纵向扩展,导入不定行数据:
![图表制作软件FineReport教程:[1]Excel导入](https://exp-picture.cdn.bcebos.com/e09173e89a618625b70a3a5b3b04541bd00faa2d.jpg)
4、内置数据集准备好之后,将字段名称数据列拖曳到A2单元格中,设置为横向扩展,并将A3单元格设置为纵向扩展,如下图:
![图表制作软件FineReport教程:[1]Excel导入](https://exp-picture.cdn.bcebos.com/0cdb2f0e1799e92aba22b6f3e1fec314f0c5a02d.jpg)
7、在customconfig.xml文件最后面的</ReportServerParameter>标签之前插入<ImportDoubleDir doubledir = "true"/>,表示开启双向导入,如下图:
![图表制作软件FineReport教程:[1]Excel导入](https://exp-picture.cdn.bcebos.com/f0848bee41c1b727a4c9f23b1a2ca5cadde8982d.jpg)
Excel导入错位
1、问题描述同一张模板,通过原样导出至Excel中,再刷新模板导入该Excel的时候,发现导入错位的问题,如下图所示:
![图表制作软件FineReport教程:[1]Excel导入](https://exp-picture.cdn.bcebos.com/906dbbcadce890480e668344130e5f204271922d.jpg)
4、参数面板中有2个参数:starttime和endtime,其中开始日期的默认值为:DATEDELTA(to颊俄岿髭day(), if(tointeger(WEEKDAY($Date)) == 0, -6, 1 - WEEKDAY($Date))),结束日期的默认值为:DATEDELTA(today(), if(tointeger(WEEKDAY($Date)) == 0, 0, 7 - WEEKDAY($Date)))。DATEDELTA()等函数的具体含义请查看日期常用处理函数。合并B3和C3单元格,其值为:=range($starttime, $endtime),合并D3和E3单元格,其值为WEEKDAY(B3),合并F3和G3单元格,设置其控件类型为文本控件。注:模板中要出现合并的单元格。
5、导出Excel保存模板,点击填报预览,在web端打开该模板,并输入值班人字段值,如下图,输入完成之后,点击工具栏上的输出>Excel>原样导出,如下图:
![图表制作软件FineReport教程:[1]Excel导入](https://exp-picture.cdn.bcebos.com/b87bd38920c5260f91af2939d2de45078901892d.jpg)
8、导出隐藏行列回到设计器,点击模板导出属性,勾选导出隐藏行和导出隐藏列,如下图:
![图表制作软件FineReport教程:[1]Excel导入](https://exp-picture.cdn.bcebos.com/d400248ca608a50fb766a43f10cec7f88b77ff2d.jpg)
9、结果查看此时再重新导出Excel,导入Excel,就可以看到位置不会发生错乱了。