我们付出一些成本,时间的或者其他,最终总能收获一些什么。
教程:Excel 入门
查看和检查 Excel 数据
1.读模块读取EXCEL文件
2.对源数据进行预览
Excel Reader 参数 |将 Excel 转换为 CSV
阅读 2020 年和平均值工作表,然后计算降水量与平均值相比的百分比。创建新列后,写出 CSV
1.读模块读取EXCEL文件
点击【参数】,选择勾选,可以对读取的表单进行选择和预览
其中,Average中将Field Names Row更改为2,主要是为了不显示第一行的文本
2.添加FeatureJoiner转换器,将两个表进行合并
3.添加 ExpressionEvaluator转换器,计算百分比
表达式如下
(@Value(Precipitation)/@Value(Average Precipitation))*100
4.添加AttributeRounder转换器,对结果进行四舍五入
设置Percent of Average字段的小数位数为2
5.添加StringConcatenator转换器,添加百分比符号
将表达式的结果修改为覆盖,连接方式如下
6.写模块写出CSV
添加CSV写模块,将文件名修改为2020Precipitation
7.结果预览
Excel Writer 参数 |将 Excel 转换为 Excel
1.在上一个模板的基础上,新增其它的表,在Add Reader下选择Import Feature Types...
会出现如下弹框,选择【参数】
将2020取消勾选,勾选2018、2019
2.将2018、2019读模块连接到FeatureJoiner的Left
由于我们的输入数据没有指示数据来自哪个工作表的属性,因此无法判断月份数据属于哪一年。这可以通过启用 fme_feature_type 属性轻松解决。此属性反映功能类型(工作表)的名称。
3.启用 fme_feature_type 属性
对2018、2019、2020 reader要素类中fme_feature_type
修改后,FeatureJoiner的输出结果如下
写入 Excel 数据时使用模板文件
1.添加读模块,读取CSV数据
2.添加Counter转换器,创建行ID
修改输出属性名为:_row,开始计数设为2,因为 Excel 模板中的第一行是具有属性(列名)的标题行,而数据从第 2 行开始。
3.添加AttributeManager转换器,创建累积公式
我们将创建一个公式来计算每年的累积降水量。
使用AttributeManager转换器创建一个名为 CUMULATIVE 的新属性和另一个名为 CUMULATIVE.formula 的属性,此属性将保存公式计算的值。.formula 很重要,因为它告诉 FME 将公式值放在后端而不是直接写入。如果您忘记了 .formula,则该公式将写入字符串。
=SUM(C@Value(_row):N@Value(_row))
4.写模块写出
添加Excel写模块,然后将其命名为 WeatherDataOutput.xlsx。打开写入器参数。将“覆盖现有文件”设置为“是”;这将确保数据被覆盖,并且不会追加到现有文件(如果文件已存在)。接下来,将“模板文件”参数设置为“WeatherDataTemplate.xlsx”。
在要素类型对话框中,将工作表名称更改为 RawData/WeatherTable。这意味着将写入 RawData 工作表中名为 WeatherTable 的命名范围。可以写入同一工作表中的多个命名区域。
然后展开“删除/截断”部分,并将“截断现有图纸/命名范围”参数设置为“是”。FME 将删除 Raw Data WeatherTable 命名范围,并使用新数据重新创建它。单击“确定”完成添加编写器。
5.输出结果