任务描述:如下图图1所示,我们有两张excel表格。假定第一张base表格是正确的ID号,而第二张mix表格里混杂了正确的和错误的。我们要利用第一张表里面的ID号匹配出第二张表中的正确/错误ID号,用“1”标记在base中出现的正确ID号,用“0”标记未出现的错误ID号。

假设你已成功安装好UiPath此时,如图2中打开后新建Process即可,记住最好将需要分析的excel表格放在新建的这个空白的文件夹里面(如图3所示)。


在进一步构思画出UiPath的流程图之前,我们先把该任务的思路捋清楚,用python语言说明。详见下图图4(这里使用的是Jupter Notebook),进行excel文件的读取,分别把base里的所有文件放在table1_list里面,把mix的所有文件放在table2_list里面。同时生成一个mix的长度的全为“0”值得列表。两层for循环,遍历table2_list中的ID号和table1_list中的ID号,利用变量count来记录位置。若table2_list中出现了正确得ID号则该位置从“0”值变成“1”值。最后将结果列表写入一个新的excel表格(out.xlsx)中自动生成。

好了,接下来就是用同样的逻辑,在UiPath中实现。流程图大致如下图图5所示,里面的细节在后面展开说明。

见左边project栏中点击下面三个选项中的“Activities”并且在搜索栏中找寻Flowchart,用鼠标点击将“Flowchart”拖到空白的作图空间内。结果如下图所示:

继续我们的画图,需要读取excel表格的内容,此时在“Activities”中找“excel”。找到“Excel Application Scope”并把它拖拉到作图空间中,将“Start”和这个“Scope”连接起来,如图7所示。

这个“Scope”的名称可以更改(后面更改成了“Read Base Excel - DT1”),双击空白处,进一步填充里面读取表格base的信息。并且生成一个DT1的table设置的细节如下图所示。需要注意的是右栏中“Properties”中的设置,特别是在output中(原本是空白的)需要单击右键选择第一个“create variable”并自己为这个table命名。与此同时,作图空间下方可通过点击“Variables”看到新生成的变量,需要把“Scope”放在全局中(默认出现在当前这个范围内)。再此退出到全局作图状态下,用同样的方法生成TD2(即读取mix文件)。

再下一步是生成一个空的全为“0”值得excel表格(result3.xlsx),然后在两层for循环外面定义新的count变量(帮助我们找到非零值得位置)。生成全“0”值的方法如图9所示,使用的是write而不是read方法。

最后一步是两个for循环的问题,但是这里需要将前面生成的table转化为object的数据类型(这个是难点,我是根据多次尝试得出来的结论)。具体步骤如图10、图11和图12所示。这里另外一个难点在于在if判断中的“是”的情况下要加入一个“break”逃出第二层循环。



这里两张table转换格式后变成了ID和ID2,具体的数据类型如下图图13所示,注意改变“Scope”全部都放在全局里面。

一切搞定后,回到全局作图空间中,点击工具栏中(图14)那个绿色大大的button“RUN”就可以了。最后的最后,我们简单对比一下用python得出来的结果和UiPath得出来的结果,如图15所示。可以判断是一致的。


网友评论