如何在UiPath中按价格对比两个Excel文件的同款商品并导出低价项?
UiPath 实现Excel商品价格对比与最低价商品筛选
需求一:按价格对比两个Excel文件的唯一行
这里的「唯一行」分为两种场景,分别给出实现步骤:
场景1:对比两个文件内各自无重复的行
- 读取数据
- 用
Read Range活动分别读取两个目标Excel文件,将数据存入DataTable变量(如dt_FileA、dt_FileB),确保勾选「包含表头」。
- 用
- 去重得到唯一行
- 对两个
DataTable分别使用Remove Duplicates活动,去重依据选择能唯一标识行的列(比如「商品名称+商品URL」组合,或直接选所有列),得到去重后的dt_A_Unique、dt_B_Unique。
- 对两个
- 价格对比
- 合并两个去重后的
DataTable:新增「来源文件」列,用Add Data Column活动添加后,通过For Each Row给dt_A_Unique的每行标记「FileA」,dt_B_Unique标记「FileB」,再用Merge Data Table合并为dt_Combined。 - 用
Sort Data Table活动按「价格」列排序,即可直观对比所有唯一行的价格高低;也可以用For Each Row逐行对比,将结果写入新列或日志。
- 合并两个去重后的
场景2:对比仅存在于单个文件的行(两个文件无交集的行)
- 读取数据:同场景1,得到
dt_FileA、dt_FileB。 - 筛选独有的行
- 用
Join Data Table活动做左连接:左表选dt_FileA,右表选dt_FileB,连接键选唯一标识列(如商品URL),得到dt_LeftJoin。筛选dt_LeftJoin中右表列为空的行,即为仅在FileA存在的dt_A_Only。 - 同理做右连接,筛选左表列为空的行,得到仅在FileB存在的
dt_B_Only。
- 用
- 价格对比:同场景1的第三步,合并后排序或逐行对比。
需求二:筛选同款商品的最低价信息并写入新文件
核心是解决商品匹配和价格对比两个问题,步骤如下:
读取并预处理商品数据
- 用
Read Range读取两个店铺的Excel,得到dt_Shop1、dt_Shop2。 - 新增「核心标识」辅助列:用
Add Data Column添加后,通过For Each Row或Invoke Code清洗商品名称,提取同款判定的关键特征(比如型号、容量)。例如:- 对「Apple iPhone 14 Pro Max 256GB 深空黑」,用正则提取
Regex.Match(row("商品名称").ToString, "iPhone \d+ Pro Max \d+GB").Value,得到「iPhone 14 Pro Max 256GB」作为核心标识。 - 若价格列含符号(如$、¥),用
row("价格").ToString.Replace("$", "").Replace("¥", "")清理后转换为Double类型,方便后续对比。
- 对「Apple iPhone 14 Pro Max 256GB 深空黑」,用正则提取
- 用
匹配同款商品
- 精确匹配:用
Join Data Table活动,以「核心标识」为连接键做内连接,得到包含同款商品的dt_Matched,每行同时拥有两个店铺的商品信息。 - 模糊匹配:若商品名称差异大,用双层
For Each Row循环遍历两个DataTable,通过String.Contains判断核心标识的重合度,或计算字符串相似度(如Levenshtein距离),符合阈值的视为同款,手动添加到dt_Matched。
- 精确匹配:用
筛选最低价商品
- 初始化空
DataTable变量dt_Lowest,结构与原表一致(商品名称、店铺URL、商品URL、价格)。 - 用
For Each Row遍历dt_Matched:- 提取两个店铺的价格数值:
price1 = Double.Parse(row("价格_Shop1").ToString),price2 = Double.Parse(row("价格_Shop2").ToString)。 - 对比价格:若
price1 < price2,则将Shop1的商品信息(对应列的值)添加到dt_Lowest;反之则添加Shop2的信息。
- 提取两个店铺的价格数值:
- 初始化空
写入结果文件
- 用
Write Range活动将dt_Lowest写入「最低价商品.xlsx」,确保勾选「包含表头」。
- 用
关键注意事项
- 价格格式统一:必须确保两个文件的价格为纯数值,否则对比时会报错,读取后先做清理处理。
- 匹配逻辑优化:根据平台商品名称的特点调整核心标识的提取规则,比如增加品牌、颜色等特征,提升匹配准确性。
- 异常处理:在价格转换、文件读写等步骤添加
Try Catch活动,捕获并处理格式错误、文件不存在等异常。
内容的提问来源于stack exchange,提问作者Palamar66
相关产品推荐
相关产品推荐

