web报表开发工具FineReport Excel导入错位
1. 问题描述
同一张模板,通过原样导出至Excel中,再刷新模板导入该Excel的时候,发现导入错位的问题,如下图所示:
2. 解决思路
这是因为FineReport在7.1版本中新增了一个双向导入的功能,即Excel双向导入,其处理逻辑发生了变化,并对模板中合并的单元格进行了处理,导致导入错乱的情况出现,那么此时只需要在模板中导出隐藏行列,并使在导入Excel的时候,不使用双向导入,即在配置文件中关闭双向导入(双向导入默认关闭的,如果开启了需要关闭)即可。
3. 操作步骤
3.1 模板准备
如上效果图所示,准备如下图所示的模板:
参数面板中有2个参数:starttime和endtime,其中开始日期的默认值为:DATEDELTA(today(), 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单元格,设置其控件类型为文本控件。
注:模板中要出现合并的单元格。
3.2 导出Excel
保存模板,点击填报预览,在web端打开该模板,并输入值班人字段值,如下图,输入完成之后,点击工具栏上的输出>Excel>原样导出,如下图:
此时,就会导出如上图所示的Excel。
3.3 导入Excel
回到设计器界面,根据导入行式报表中的操作步骤,为该模板的工具栏添加导入Excel按钮,添加完成之后,重新填报预览该模板,点击导入Excel,选择刚刚导出的Excel文件,即可看到如下图所示效果,位置错乱:
3.4 导出隐藏行列
回到设计器,点击模板导出属性,勾选导出隐藏行和导出隐藏列,如下图:
3.5 结果查看
此时再重新导出Excel,导入Excel,就可以看到位置不会发生错乱了。