如何使用列名在Excel工作表中添加两列,而不是提供单元格编号范围来在Uipath中定位列

问题描述

我基本上想执行两列的加法运算并将结果存储在第三列中。

但是挑战是我不能使用列的单元格数来定位列。相反,我必须使用列名/标题,当我找到标题时,我必须在这些列的值之间执行加法运算,并存储结果列。

我必须使用第三列的名称,而不是位置。

解决方法

出于测试目的,我创建了一个如下所示的Excel:

excel before

现在,我为您创建了此工作流,该工作流正在处理第一第二列的添加,而不管它们在哪一列中。

获取列很容易。困难的部分是确定目标列,正如您所说的那样,将来该列可能会切换该列,而不应该由列号来确定。

分步操作:

第1步:

因此,一开始您要读取Excel文件。将结果写入 DataTable DT1。然后创建内容为result_index的变量DT1.Columns.IndexOf("result (1+2)")

workflow part 1

第2步:

现在变得越来越复杂。首先,我们遍历数据表DT1。在这里,我们确定列的字母。这是由我们先前创建的result_index变量完成的。然后在Switch中,将该索引转换为字母。我认为这很简单:

  • 2-> C
  • 3-> D
  • 依此类推...

workflow part 2

现在有了该字母,我们可以使用它来填充result列。因此,为了生成单元号,我们只需使用letter.ToString + row_index.ToString。在我们的情况下,这代表“ D2”。而且,如果您查看Excel文件,您将看到这是结果数据的第一个单元格。

加法非常简单,因为它仅用(CInt(row("first")) + CInt(row("second"))).ToString来汇总已知的列。

workflow part 2.2

最后,当它运行时,您将找到该结果。

excel after


改进思路:

  1. 这不是一个完美的解决方案。一个巨大的改进就是不使用Write Cell活动。相反,您需要创建另一个数据表。填写结果数据。并将Write Cell替换为Write Range活动。

您将DataTable设置为输入。

这将加快行的填充速度,因此更快地填充了巨大的Excel文件。

  1. 您也可以将Switch替换为字符转换。您可以在this snippet上找到这个想法。