UiPath Level 1-Lesson 9. Excel & Data Tables

简介:

Excel是一种广泛应用的表格处理软件。本单元中,将介绍专门针对于Excel和DataTable型数据的活动以及与Excel交互的两种不同方式等。

学习大纲:

  • 如何用Read Range活动从Excel文件中读取信息
  • 如何操作DataTable
  • 如何筛选表格数据
  • 如何使用Append Range活动

1. 概念

1) Excel相关的活动:在App Integration - Excel分类下。 

2) DataTable相关的活动:在Programming - DataTable分类下。

3) Excel Workbook (工作簿) vs. Data Table

Workbook就是Excel文件,它可以包含各种类型的数据、工作表、也可以应用各种格式、布局、合并单元格等等。

Data Table是最简单的表格数据,只包括行、列,也可以有标题行。


 

2. 实例1

目标:打开一个Excel文件并显示它的内容,最后将它存到一个新的Excel文件中。

数据

方法

1) 首先,读取数据。添加一个Excel Application Scope活动

在处理Excel文件时,添加的第一个活动总是Excel Application Scope活动。它是一个容器,其他与这个Excel文件相关的活动包括读取、写入等,都放在容器里运行。

2) 点击浏览按钮 并选取Excel文件。浏览窗口默认打开Project所在的文件夹。如果文件就在Project所在的文件夹下,部分路径会省略。比如"xls\science.xlsx"表示Project所在文件夹下(已省略)的xls文件夹里的science.xlsx文件。

注意:Workbook Path参数也可以用变量代替来达到动态化。

3) 设置Visible参数。此处取消选择Visible参数。

Visible参数如果选中,表示使用Microsoft Excel应用程序来读取文件;如果未选中,则操作会在内部进行。

区别

使用Excel程序:必须安装Excel软件;可在同一个文件上运行多个进程;变化实时可见。比较适合调试程序和检测程序进度。

直接访问:不需要安装Excel软件;一个文件只允许一个进程使用;只能用于xlsx格式的文件;进程在后台运行。

4) 在Excel Application Scope容器里,添加一个Read Range活动

Read Range活动可以读取Excel文件的一部分内容并把它存储到一个Data Table里。

在Output里创建一个DataTable型变量DT1。在Input里,Range参数默认是空的,表示读取整个工作表的数据,可以为它设置具体的范围比如"A2:C3"。这里使用空值即可。

5) 接下来,显示这个Data Table。添加一个Output Data Table活动

虽然活动名为Output,但它不会把结果显示在Output面板上。该活动是将DataTable型数据转换成字符串型数据,以便于显示它。

在Input里填上DT1,在Output里创建一个新的String型变量strDT。 

 

6) 添加一个Message Box活动,并在Input里填入strDT,来显示Data Table。 

7) 最后,把数据保存到一个新的Excel文件里。因为是新文件,要添加一个新的Excel Application Scope容器。

指定数据写入的Excel文件所在的路径。如果路径下没有该文件,则将创建它。

8) 添加一个Write Range活动

在Write Range活动的Input里填上需要写入的DataTable型变量。StartingCell参数表示写入数据的起始单元格。如果指定的单元格区域已经存在数据,Write Range会把旧的数据覆盖掉

 

AddHeaders参数

在Read Range活动中,AddHeaders参数表示是否把第一行作为标题行;在Write Range活动里则表示,是否在写入数据时添加标题行。


 

3. Excel和Data Table的其他常用活动

1) Append Range活动

和Write Range活动同样是写入数据,Append Range活动在工作表现有的数据之后写入数据,不会覆盖已有数据

2) Build Data Table活动

该活动可以创建一个DataTable型数据。

  • 单击DataTable...按钮以打开创建窗口。
  • 默认生成一行两列的Data Table。点击x号可以删除行列,点击+号可以添加新列。
  • 添加新列时会弹出New Column窗口。
  • 最后将创建的DataTable保存到Output变量里。

3) Sort Data Table活动

Input填入要排序的DataTable型数据;Output用来输出排序后的结果;Sorting Column指定要排序的列,它有三个参数,可任选一个来指定列。 

  • Column参数:指定实际的Column对象。
  • Index参数:指定列号。注意,DataTable数据都是从0开始索引的 (0-indexed),即第一列的列号是0。
  • Name参数:指定列标题。

4) Read Cell活动 Write Cell活动

5) Select Range活动:选中单元格或单元格区域。

6) LookUp Range活动:在工作表里查找某个特定值。


 

4. 实例2

数据:大约有300条数据。

目标1:

筛选并显示年龄小于30且薪水大于$100,000的记录。

方法1:

1) 添加一个Excel Application Scope容器,在里面添加一个Read Range活动来读取数据,将数据存储到变量DT1中。

2) 在Excel Application Scope容器外添加一个Filter Table活动筛选数据。

Filter Rows Tab:

  • Input DataTable:数据源。
  • Output DataTable:筛选结果。可以和Input DataTable使用同一个变量。
  • Keep Rows/Romove Rows:保留/删除符合条件的行。
  • Column:列标题,必须是String型。
  • Operation:大于、小于等条件。
  • Value:支持多种类型的数据,可以不是String型。
  • :删除/添加新的条件。
  • :设置多条件筛选的逻辑:And或Or。单击And即可切换成Or。

Output Columns Tab:

  • Keep Columns/Remove Columns:保留/删除筛选条件的所在列,此例中为Age和Pay列。

 3) 添加一个Output Data Table活动Message Box活动来显示筛选结果。

 

目标2:

使用已有的数据创建一个新的DataTable,包括姓名、年龄和收入三列。

方法2:

1) 添加一个Excel Application Scope容器,在里面添加一个Read Range活动,选上Add Headers参数,将数据存储到变量DT1中。 

2) 在容器里添加一个Build Data Table活动,添加Name、Age和Income三列,并存储到变量newDT中。

3) 在容器外添加一个For Each Row活动,在In里设置在哪个Data Table中循环。

  • For Each Row活动是Data Table专用的,它可以遍历Data Table里的每一行。For Each活动比较通用。

4) 在For Each Row活动的Body中添加三个Get Row Item活动,它可以输出当前行里某个特定单元格的值。

  • ColumnIndex:填索引号,从0开始。
  • ColumnName:填列标题,前提是选中Add Headers参数。
  • Row:填row即可。

*ColumnIndex和ColumnName选择后者可以更好的适应添加/删除列的情况。

 

5) 在最后一个Get Row Item活动之后添加一个Add Data Row活动

  • Array Row:要添加的信息,以数组的形式出现。此例中填入{name, age, income}。
  • DataTable:要添加行的DataTable。此例中为newDT。

6) 在For Each活动的下面添加一个Excel Application Scope容器。在其中添加一个Write Range活动写入数据。


 

5. 练习1

数据

要求:通过三种不同的方式得到A列和B列单元格的和,并写入C列。

  • 方法1:Excel保持打开的状态并实时写入数据,你可以看见每一行的变化。
  • 方法2:Excel处于关闭的状态,将每一个列的值存储到Datatable中,最后把得到的结果一次性写到Excel里。
  • 方法3:使用Excel公式计算。

方法1:

  • 添加一个Excel Application Scope活动。填入数据所在的工作簿的完整路径,确保Visible参数被选中。
  • 在Excel Application Scope容器里添加一个Read Range活动。设置Range参数为以读取整个工作表,将读取的数据存储到变量inputsTable中。
  • 在Read Range活动后添加一个For Each Row活动,设置该活动在inputsTable中循环。
  • 在For Each Row容器里添加一个Assign活动。创建一个Int32型变量rowIndex,将inputsTable.Rows.Indexof(row)+1赋值给rowIndex。
    • 这样做使rowIndex的值等于目前正在For Each Row活动中循环的行在Excel中的行号。+1是因为DataTable的行号是从0开始的。
  • 在Assign活动后添加两个Get Row Item活动
  • 第一个Get Row Item活动设置ColumnIndex参数为0 (A列),Row参数为row (临时循环变量),将读取的数据存储到变量valueA中。
  • 第二个Get Row Item活动设置ColumnIndex参数为1 (B列),Row参数为row (临时循环变量),将读取的数据存储到变量valueB
  • Below that activity, find and add two Get Row Item activities
  • 添加一个Assign活动。创建变量valueC,使它等于valueA+valueB。
  • 添加一个Write Value活动。设置Range参数为"C"+rowIndex.ToString,设置Value参数为valueC。  

  

  

方法2:

(不使用Excel Application Scope活动,自动化在内部完成。)

  • 添加一个Read Range活动,设置工作簿的路径,创建变量 inputsTable
  • 添加一个Add Data Column活动,设置ColumnName参数为C,设置DataTable参数为inputsTable。设置Argument Type为object。

  

  • 添加一个For Each Row活动,并在inputsTable中循环。
  • For Each Row活动的容器中添加两个Assign活动。一个把row(0).ToString的值赋给变量valueA;一个把row(1).ToString的值赋给变量valueB
    • row(0).ToString和row(1).ToString把对象转换为更便利的文本型的数据。
  • 再添加一个Assign活动,把Integer.Parse(valueA) + Integer.Parse(valueB)的值赋给row(2)。
    • Integer.Parse是一种VB方法,可以把字符串型数据转换为数字型数据。
  • 在For Each Row活动的后面添加一个Write Range活动,设置DataTable参数为inputsTable,设置Starting Cell参数的值为空,并设置一个新的工作簿路径。
    • 如果文件不存在,UiPath会自动创建该文件。

  

方法3:

(使用Excel公式计算。)

  • 添加一个Excel Application Scope活动。设置工作簿的路径,选中Visbility选项。
  • 在Excel Application Scope容器里添加一个Read Range活动,创建DataTable型变量inputsTable
  • 添加一个Assign活动,将 inputsTable.Rows.Count赋值给一个新的变量rowsCount
  • 添加一个Write Value活动,设置写入的Range为:"C1:C" + rowsCount,设置写入的值为"=SUM(A1,B1)"。
    • Excel会自动将写入的值按照行号迭代。

   


 

 

*本课使用的新活动、方法、函数等:

  • Excel Application Scope
  • Read Range
  • output data table
  • Write Range
  • Append Range
  • Build Data Table
  • Sort Data Table
  • Read Cell
  • Write Cell
  • Select Range
  • LookUp Range
  • Filter Table
  • For Each Row
  • Get Row Item
  • Add Data Row
  • Write Value
  • Integer.Parse:VB方法,可以把字符串型数据转换为数字型数据。
  • Rows.Count

转载于:https://www.cnblogs.com/TeresaMu/p/9929208.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值