1. 概述
1.1 应用场景
财务报表、销售数据表、学生成绩表等 Excel 表格中,往往包含多个 Sheet,用户希望使用 FDL 读取单 Excel 多 Sheet 文件数据。
1.2 实现思路
1)在待读取 Excel 文件中新增一个 Sheet 页,使用代码将所有 Sheet 页名称输出到该 Sheet 页中。
2)使用「参数赋值」算子,将 Sheet 页名称输出为参数(上图中的 Sheet4 页中,第一行数据不作为参数输出,只将包含业务数据的 Sheet 页名称输出为参数)。
3)使用「循环容器节点+数据同步」节点:遍历所有 Sheet 页名称参数,读取所有 Sheet 页数据。
1.3 任务展示
FineDataLink 中的数据处理过程,详情参见:https://demo.finedatalink.com/ 「读取单Excel多sheet文件数据」。
1.4 注意事项
需要满足条件:
Excel 文件的所有 Sheet 页的字段名,需要相同。
Excel 需要支持满足的版本为 97~ 最新版本。
2. 操作步骤
2.1 场景模拟
示例数据:销售表.xlsx,示例数据为销售数据表,包含三个 Sheet 页。如下图所示:
现希望在 FDL 中读取所有 Sheet 页数据,方便后续进行数据处理。
2.2 生成 Sheet 名索引页
FDL 的 文件输入 算子、数据同步节点>文件输入中,支持读取某个 Sheet 页数据,且 Sheet 页名称支持使用参数。所以,我们需要将所有 Sheet 页名称输出为参数,再使用「循环容器节点+文件读取功能」,遍历读取所有 Sheet 页数据。
1)在所有 Sheet 页最前面添加一个 Sheet 页(本文示例中,名称默认为 Sheet4),用来存放所有 Sheet 名称。如下图所示:
2)点击「开发工具>查看代码」,输入代码并运行代码,将所有 Sheet 页名称输出到 Sheet4 中。如下图所示:
注:用户操作时,将代码第三行的 Sheet4 修改为实际新增的 Sheet 页名称。
function 批量获取工作表名称(){
let i=1 //定义变量i,用于指定存放工作表名称的行号,从第1行开始
let tsh=Sheets.Item('Sheet4') //将“Sheet4”工作表定义为tsh
for(let sh of Sheets){ //遍历工作表
tsh.Cells.Item(i,1).Value2=sh.Name //将工作表名称写入“Sheet4”工作表的A列
i++ //每循环一次,行号加1,这样就不会覆盖已经写入的内容
}
}
3)运行后,Sheet4 界面如下图所示:
4)保存表格内容。
2.3 将 Sheet 页名称输出为参数
需要读取「销售表」数据的「Sheet4」数据,将 Sheet 名称输出为参数,便于后续步骤中读取所有 Sheet 页数据。
2.3.1 读取文件数据前准备
需要 配置服务器本地目录数据连接 OR 配置FTP/SFTP数据连接,读取 Excel 文件数据。
本文示例中,将「销售表」数据放在FTP/SFTP 服务器上,所以配置了 FTP/SFTP数据连接
2.3.2 Sheet 页名称输出为参数
1)FDL 中,新建定时任务,拖入「参数赋值」节点,读取「销售表」的 Sheet4 页数据,将 Sheet 页名称输出为参数。如下图所示:
设置从 Sheet4 的第一行读取数据,且第一行作为字段名,即第一行数据不作为参数输出(第一行的值为 Sheet4,Sheet4 中并没有实际业务数据,所以后续步骤中不读取该 Sheet 页数据)。
点击「数据预览」,如下图所示:
2)点击「输出参数」Tab页,将第一列所有行数据输出为参数,参数名称为 name;建议在调试值中设置一个参数默认值,便于后续节点引用参数后查看效果,调试值并不参与实际运行。如下图所示:
2.4 设置循环容器节点
由于待读取的 Sheet 页为多个,而读取文件数据时每次只能读取一个 Sheet 页数据,所以需要使用「循环容器」节点,遍历所有 Sheet 页参数。
拖入一个「循环容器」节点,循环方式选择「遍历循环」,遍历对象勾选参数「name」。如下图所示:
2.5 读取 Sheet 页数据
本文示例中,只展示如何读取单 Excel 多 Sheet 页数据,数据读取后并不做处理,所以使用「数据同步-文件输入」功能读取 Excel 数据。
若用户实际场景中,需要对读取的数据进行数据,建议「循环容器」节点中拖入「数据转换」节点,使用「文件输入」算子读取数据,再使用其他算子对数据进行处理。
1)「循环容器」节点中拖入「数据同步」节点,Sheet 名处引用参数 name 读取 Sheet 页数据。如下图所示:
点击「数据预览」,可查看读取的数据。如下图所示:
2)「数据去向与映射」Tab 中,将数据输出到目标表中。如下图所示:
3)写入方式选择「追加写入数据」即可。
2.6 效果查看
1)任务运行成功后,界面如下图所示:
2)目标表数据如下图所示:
2.7 内容扩展
1)可点击「发布」按钮将任务发布到 生产模式 中。如下图所示:
2)不同场景中读取文件数据示例:应用示例