题目:
您的任务是自动计算 Excel 文件中两个字段(现金流入和现金支出)之差,并将其输入第三列。不幸的是,随着时间推移,文件中已累积很多错误。简单的工作流会引发 System.Exception,因为机器人会尝试使用包含字母的 Int32 变量来执行数学计算。
创建一个工作流,将下面附加的 Excel 文件作为输入,并将现金流入值和支出值之差添加到第三列中的每一行。如果成功计算出两值之差,则将“状态”设置为“成功”,否则将状态设置为“现金流入”错误或“现金支出”错误。
尝试转换现金流入和流出值时,请使用 Try Catch 块进行异常处理。
表格:
完成步骤:
因为是要处理表格,,并且最后还要保存表格,所以全部活动都在Excel Application Scope活动的Do中完成。
使用活动Read Range打开表格"CashFlow",并保存为dataTable。
接下来我们使用for each模块对dataTable中的数据行进行遍历。
对"cash In"和"cash Out"两列进行异常判断,使用try catch。
- 使用“遍历每一行”活动遍历数据表并:
- 创建 3 个 Int32 变量,分别将其命名为 cashIn、cashOut 和 finallyNumber。
- 通过使用 cint(row("Cash In")) 方法,添加一个“异常处理”活动,并将“分配”活动放置在“Try”块中,从而将 cashIn 值转换为 Int32。在“Catch”块中,包括“警告”级别的日志消息(“exception.Message + "at" + exception.Source”)和状态变量(值为“现金流入错误”)的分配活动。
- 通过使用 cint(row("Cash Out")) 方法,添加另一个“异常处理”活动,并将“分配”活动放置在“Try”块中以将 cashOut 值转换为 Int32。在“Catch”块中,包括“警告”级别的日志消息(“exception.Message + "at" + exception.Source”)和状态变量(值为“支出错误”)的分配活动。
- 添加一个“If 语句”活动,条件为“状态为空”:
- 在“Then”下,分配结果值,并将结果设置为等于 cashIn 和 cashOut 之差,然后使用“分配”活动在数据表的“差额”列中输入两者之差。将值“成功”分配给数据表的 row("Status")。
- 在“Else”下,在“差额”列中分配值“不适用”,并将“状态”变量的值分配给数据表的 row("Status")。
最后处理完row
保存dataTable
完成