历史版本13 :Excel导入时根据单元格位置匹配 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 描述编辑

Excel 导入行式报表根据位置匹配是指,Excel 导入进来的时候需要导入数据的单元格从第几行第几列开始,那么 Excel 中数据就从第几行第几列开始,无关于标题名称,只跟位置有关系。

如下图,可以看到 Excel 中的列标题与 FineReport 模板的列标题完全不一致,但是位置却保持一致,FineReport 模板中导入数据的单元格从 B3 开始,那么导入 Excel 中,从 B3 开始的数据就被导进来了:


注:行式报表根据位置匹配的前提是标题完全匹配不上,如果有2个或2个以上标题能匹配得上,那么就会使用根据标题匹配,但是如果通过配置文件设置了不执行根据标题匹配,那么就会直接执行根据位置匹配。




2. 示例编辑

2.1 模板准备

上图中我们可以看到,Excel 中第一行数据(不包括标题)在 B3~K3 中,在填报模板中,导入数据的单元格也要在 B3~K3,单元格从上到下扩展,并添加控件:

注:若导入的报表中不是空白的填报表,而是有取数的功能,则需要将报表的最左父格设置为列表显示。


2.2 报表填报属性设置

在报表填报属性中,只需要将第一行单元格与数据表的数据列进行绑定即可。

该例中,Excel 中的原始数据供应商和类别都是具体的名字,若用户希望 Excel 导入的是名字,但实际入库的是 ID 怎么办呢?

此时可以在报表填报属性中使用map函数转换,以下具体介绍。

定义 map 函数需要的数据集

增加数据集 ds1,SQL 语句为:SELECT * FROM 供应商

再增加数据集 ds2,SQL 语句为:SELECT * FROM 产品类别

报表填报属性中使用 map 函数

Excel 导入的是名字,使用 map 函数转换,如下图:


2.3 填报工具栏设置

默认填报工具栏是没有导入 Excel 按钮的,点击模板>模板 Web 属性>填报页面设置为该模板单独设置,勾选使用工具栏,为该报表单独设置工具栏,清空工具栏,然后在按钮面板中双击提交按钮和导入 Excel 按钮,将这两个按钮添加到顶部工具栏中,如下图:

已完成模板可参考%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject|\ExcelImport\导入Excel根据位置匹配.cpt

在线查看模板效果请点击 导入 Excel 根据位置匹配 .cpt

注:在线查看模板需要用到示例中的excel,点击excelimport.xls下载。

另:如果模板中导入数据的单元格(设置了扩展属性并添加控件的单元格)从第 6 行开始,那么根据位置匹配导入的时候,Excel 中数据就从第 6 行开始导入。