【UiPath2022+C#】UiPath 练习-Excel和数据表

文章目录

  • 【UiPath2022+C#】UiPath 练习-Excel和数据表
    • 环境
    • 练习
      • 练习 1 - 计算总和
        • 计算两个 Excel 文件中的总和
      • 解决方案
        • 练习 1 解决方案
        • 解决方案 2
        • 解决方案 3 - 通过在初始文件中使用 Excel 公式来计算总和:
      • 练习 2 - 计算亏损发票
        • 检查发给破产客户的发票
      • 解决方案
        • 练习 2 解决方案
      • 练习 3 - 计算费用百分比
        • 将现金和信用卡费用汇总在一起,并计算各类别的百分比
      • 解决方案
        • 练习 3 解决方案

环境

UiPath Studio Community 2022.4.3

Windows

C#

练习

练习 1 - 计算总和

计算两个 Excel 文件中的总和

用 3 种方法计算 Excel 文件中两列值的总和。创建一个工作流,将 A 列上的值与 B 列上的值相加,并以不同的方式将它们写入 C 列:

  1. 保持 Excel 的打开状态,并实时逐行写入结果,以便您可以看到更改;
  2. 保持 Excel 关闭,设置内存数据表中的列值,最后将所有表一次添加到新的 Excel 文件中;
  3. 使用原始文件中的 Excel 公式计算总和。

注意:使用下面的示例 Columns.xlsx 文件作为本练习的输入文件。

解决方案

练习 1 解决方案

将解决方案分为 3 个序列:

解决方案 1 - 使 Excel 保持打开状态,并实时逐行写入结果,便于您查看更改:

此解决方案中的所有活动都应放置在 Excel 应用程序作用域容器中,该容器包含 Sample Columns.xslx 的完整路径。确保选中了“可见”选项。

  1. 使用**“读取范围”活动读取 Excel 文件。将范围设置为 “”,从而读取整个工作表,并且在输出参数中,使用快捷方式 Ctrl+K 来创建名为 “inputTable” 的数据表变量**;

  2. 使用**“遍历每一行”**活动并将其设置成遍历 “inputTable”。创建名为 “rowIndex” 的 Int32 变量 - 这将保持跟踪稍后要写入的行。在主体框内:

  • 添加**“分配”**活动,将 inputTable.Rows.IndexOf(row) +1 分配至 rowIndex。由此设置 “rowIndex” 的值以匹配循环中的当前行。“+1” 是必要的,因为 Excel 行在 1 处开始计数,而数据表以索引 0 开始;
  • 使用**“获取行项目”**活动并将列索引设置为 0,将行设置为 row(临时循环变量)。在输出参数中,使用 Ctrl+K 快捷方式来创建名为 “valueA” 的变量;
  • 使用另一个**“获取行项目”**,并将列索引设置为 1,将行设置为 row。在输出参数中,使用 Ctrl+K 快捷方式创建名为 “valueB” 的变量;
  • 添加下面的**“分配”**活动并将 valueA + valueB 分配至 valueC(在这里也是用快捷方式创建变量);
  • 接下来添加**“写入单元格”**活动。将工作表保留为 “Sheet1”,将范围(工作表中进行写入的位置)设置为 “C” + rowIndex.ToString。在整个循环中,这将转到 “C1”,然后是 “C2”,依此类推,直到第三列。将值设置为 valueC。
解决方案 2

保持 Excel 关闭,在内存数据表中设置列值,并一次将所有表格添加至新的 Excel 文件,最后:

对于这个解决方案,我们不需要 Excel 应用程序作用域容器。

  1. 使用**“读取范围”活动读取 Excel 文件。将范围设置为 “”,从而读取整个工作表,并且在输出参数中,使用快捷方式 Ctrl+K 来创建名为 “inputTable” 的数据表变量**;

  2. 使用**“添加数据列”新建列 (“C”) 并将其添加至 “inputTable” 变量。务必将参数类型**设置为“对象”;

  3. 使用**“遍历每一行”**活动并将其设置为遍历 “inputTable”。在主体框内:

  • 添加 2 个**“分配”活动来分别提取列 “A” 和列 “B” 的值,并通过使用 row(Index).ToString 将每个变量存储至新建的变量**(分别为 “valueA” 和 “valueB”)。‘Index’ 将被替换为列的实际索引(在本例中为 0 或 1);
  • 使用另一**“分配”**活动来计算总和,并将其存储在数据表的第三列中,具体方式是使用 ‘Integer.Parse’ 方法:row(2) = Integer.Parse(valueA) + Integer.Parse(valueB);
  1. 使用**“写入范围”**活动将数据表的列写入 “Sample Columns - Completed.xlsx” 文件。
解决方案 3 - 通过在初始文件中使用 Excel 公式来计算总和:

该解决方案最多涉及的是使用 Excel 命令。它应当完全包含在 Excel 应用程序作用域内。

  1. 使用**“读取范围”活动读取 Excel 文件。将范围设置为 “”,从而读取整个工作表,并且在输出参数中,使用快捷方式 Ctrl+K 来创建名为 “inputTable” 的数据表变量**;

  2. 使用**“分配”**活动来计算行的数目,并将其存储在新建的变量中。使用 ‘.Rows.Count’ 方法:rowsCount = inputTable.Rows.Count;

  3. 使用**“写入单元格”**活动来写入 “=SUM(A1,B1)” 至范围 ‘C1:Cx’,其中 x 为存储在 “rowsCount” 变量中行总数。

练习 2 - 计算亏损发票

检查发给破产客户的发票

检查 Excel 文件中哪些发票是发给破产客户的,并计算要记录为亏损的发票总额。

输入文件:

  • Invoices (.xlsx)
  • Clients (.csv)

解决方案

练习 2 解决方案
  1. 使用**“”读取范围”活动来读取 .xlsx 文件,并将其存储在新建的数据表变量** (“invoicesDT”) 中;

  2. 使用**“读取 CSV”活动来读取 .csv 文件,并将内容存储在新建的数据表变量** (“clientsDT”) 中

  3. 添加**“联接数据表”活动将来自两个变量的数据合并成一个 (“resultsDT”)。输入数据表 1 应当为 “clientsDT”;并且输入数据表 2** 应当为 “invoicesDT”。使用两个数据表中的**“Client Name” 列作为联接条件,并且使用“左侧”联接类型**(从而仅保留在第二个数据表中为客户签发的发票)。

  4. 通过使用**“筛选数据表”活动,检查 “resultsDT” 中的哪些发票签发给了破产的公司。为此选择“保留”单选按钮**,并将 ‘IsBankrupt’ 用作筛选条件(值 “TRUE”)。您可使用该活动来删除不需要的一些列 - 转到**“输出列”选项卡,选中“删除”**按钮,然后写下不需要的列的名称(“ClientName_1” 和 “ClientId”)

  5. 要计算来自破产公司的亏损,遍历过滤后的数据表中的行,并将**“InvoiceValue”列**(已转换为 Integer)的内容添加到一个变量中,我们将在该变量中存储总和-整数类型的“totalLoss”。在主体框中通过以下方法使用**“遍历行”“分配”**活动:totalLoss = totalLoss+Cint(row(“InvoiceValue”))

  6. 使用**“写入范围”活动,将筛选的数据表写入新的 Excel 文件。另外,您可使用“写入单元格”**活动,将总亏损信息添加至主表格之外的单元格,例如 H4 单元格。

练习 3 - 计算费用百分比

将现金和信用卡费用汇总在一起,并计算各类别的百分比

我们有一张用卡支付的费用清单(房租、食物、水电费、休闲、储蓄)。我们发现有些交易不见了,因为它们是用现金支付的。准备一个工作流,将所有费用纳入一个文件,并计算每项费用的百分比。

输入文件

  • CardPayments (.xlsx)
  • CashPayments (.xlsx)

解决方案

练习 3 解决方案
  • 使用 2 个“读取范围”活动来读取两个文件中的数据,并将它们存储于 2 个数据表变量 - “CardExpensesDT” 和 “CashExpensesDT”。请记得为两个活动选中“添加标头”选项;
  • 接下来,您需要将所有数据汇入单个数据表。最便利的方式是将来自 “CashExpensesDT” 的条目引入 “CardExpensesDT”。为此您需要使用**“遍历行”**活动遍历 “CashExpensesDT”。在主体框中:
  1. 使用 2 个“获取行项目”活动来将行项目捕获进 “Expense” 和 “Date” 列,并将它们存储于新建的变量(“ExpenseName” 和 “ExpenseData”);

  2. 使用**“分配”**活动来存储费用的值,并将它们存储于新的变量 (“ExpenseValue”)。方法的形式应当如下:ExpenseValue = row(“Value”).toString;

  3. 使用**“添加数据行”**活动,添加 “CardExpensesDT” 变量中 3 个变量的值,方法是在 **“数组行”**下写入 {ExpenseName, ExpenseData, ExpenseValue}

  • 接下来,您需要按月将费用分组,以便计算百分比。为此,您需要使用**“遍历每一行”**遍历 “CardExpensesDT” 的行,并将月份添加至名为 “Months” 的字符串列表。在主体框中:
  1. 通过**“获取行项目”**活动获取来自行的日期值,并解析日期以获取月份。方法应当类似以下形式:ExpenseDate.Remove(0, 3).Remove(2, 5)。它的作用是先删除日,再删除年份;

  2. 如果”月份“集合不包含来自当前行的月份,则添加该月份。这使用”If 语句“活动来完成;

  • 接下来,您需要构建将写入文件的数据表。拖动**“构建数据表”活动,然后设置标头**(“Expense”、“Date”、“Value” 以及 “Percentage”,这是新的)。您可将新的数据表变量命名为 “monthlyDT”。
  • 使用**“遍历”**活动并遍历 “Months” 集合。在主体框中:
  1. 使用**“清除数据表”活动,以在每个循环开头确保 “monthlyDT” 始终为空。另外使用“分配”**活动,将 “monthlyTotal” 变量的值重置为 0(该变量将用于存储一个月的费用总值)

  2. 如果费用月份等于循环中的月份,将新的行添加至 “monthlyDT”。

  3. 使用**“对于每一行”**再次遍历“CardExpensesDT”的行,并且:

- 使用 **2 个“获取行项目”**活动来将信息捕获进 “Expense” 和 “Date” 列,并且将它们存储于变量(“ExpenseName” 和 “ExpenseData”);

- 使用**“分配”**活动将费用的值存储,并存储于新的变量 (“ExpenseValue”)。方法应当类似以下形式:ExpenseValue = row(“Value”).toString

- 使用另一个**“分配”来提取月份并使用和上述相同的方法**将其分配至 “ExpenseMonth” 变量;

- 使用**“If 语句”来检查 “ExpenseMonth” 的值是否等于当前月份,由此完成循环;如果是,则通过以下方法**用费用值增大 monthlyTotal:Int32.Parse(ExpenseValue)

- 使用**“遍历每一行”来遍历 “monthlyDT” 变量并填写 “Percentage” 列,方法是使用”分配“活动以及以下方法**:row(“Percentage”) = (int32.Parse(row(“Value”).ToString) * 100 / monthlyTotal).ToString;

  • 最后,将费用写入 AllPayments.xlsx 文件。您可使用**“附加范围”workbook 活动,但是其将不会写入标头。因此,对于第一个循环,使用“写入范围”**workbook 活动。

“Value”).ToString) * 100 / monthlyTotal).ToString;**

  • 最后,将费用写入 AllPayments.xlsx 文件。您可使用**“附加范围”workbook 活动,但是其将不会写入标头。因此,对于第一个循环,使用“写入范围”**workbook 活动。

【UiPath2022+C#】UiPath 练习-Excel和数据表相关推荐

  1. excel插入行 uipath_【RPA之家UiPath官方教程】Excel和数据表

    Excel和数据表 本课程涵盖了针对DataTable类型的最常见的数据处理方法,以及使用Excel文件的特定方法. 受众:RPA开发人员 学习目标 在本课程结束时,您应该能够: 创建,自定义和填充D ...

  2. SQL Server 与 Excel,Access 数据表的导入导出(注:参照博园.NET大观)

    我们知道在Sql Server 中 集成了数据的导入导出这么一个工具,那用Sql 脚本怎么轻松操作 Access 和 Excel 中的数据呢,接下来我们看一看: 一. SQL SERVER 和EXCE ...

  3. DataGridXL快速JavaScript Excel类数据表

    DataGridXL快速JavaScript Excel类数据表 DataGridXL 为 Web 应用程序提供类似于 Microsoft Excel 的体验.DataGridXL 是一个高性能的数据 ...

  4. Excel在数据表中悬停鼠标显示数据值

    打开一个实例文档,鼠标移动到数据表中,在柱状图上中悬停鼠标,可以看到没有显示数据的值. 鼠标单击左上角的<文件>按钮. 然后单击<选项>按钮. 在弹出的excel选项对话框中单 ...

  5. uipath操作excel写入数据

    1.首先构建数据表,插入自己想要写入的数据标头 2.添加数据行 添加多个数据 3.写入到excel操作,填入要写入的excel位置即可 4.逐行写入不覆盖用到附加范围 完结撒花

  6. php怎样打印excel图表,Tp5.0+PHPExcel.php实现excel打印数据表

    1.你的先下以一个类的扩展PHPEXcel.php (https://codeload.github.com/PHPOffice/PHPExcel/zip/1.8),这个时候放的位置可有讲究了,此处附 ...

  7. [转自CSDN]EXCEL工资数据表打印

    原贴:http://community.csdn.net/Expert/topic/5000/5000593.xml Q:taoyb (tyb)   有一个工资数据表打印,就用a4纸,但每一行数据都要 ...

  8. excel查询mysql数据库表,excel创建数据表/查询mysql数据库中所有表名

    excel两个表格,数据库表与专门查询该数据库信息的表.在查询表中以多个项目进行查询符合条件的数据. 可以用"筛选"这个功能,在菜单里,对两个列进行筛选,符合条件的就会显示出来.很 ...

  9. python对比excel两列数据_python 对比excel表格数据表-python实现两个excel表列数据对比若源表与目标表存......

    在数据分析方面,比起python,excel的局限性在哪 data3 = pandas.merge(data1, data2, on=['名称'], how='inner') inner:内连接,取交 ...

最新文章

  1. SAP RETAIL 如何查看分配表是参考哪个PO来创建的?
  2. Entity Framework 基础
  3. Java简单多线程断点下载
  4. 打开表时提示 Out of resources when opening file......错误解决
  5. import和require的区别
  6. 卡写入保护开关原理_老电工带你解密:插卡取电开关
  7. C/C++内存分配方式 .
  8. lock锁和monitor.enter锁
  9. selinux会阻碍挂载嘛_为什么追求完美可能会阻碍您成为新手Web开发人员
  10. Java如何封装JDK_java7JDK的常用封装类型
  11. Android备份onedrive,三星Note10正将OneDrive集成到Android相册应用中
  12. 浅谈HTTP中Get与Post的区别_转
  13. ASP.NET前台html页面AJAX提交数据后台ashx页面接收数据
  14. window下hadoop、hbase的安装和eclipse开发环境配置
  15. Ansible详解(一)——Ansible理论基础
  16. 第三百三十七节,web爬虫讲解2—PhantomJS虚拟浏览器+selenium模块操作PhantomJS
  17. 如何让Linux上的GPG error 无法验证的这个公钥 NO_PUBKEY D97A3AE911FXXXXX 出错信息消失?
  18. 职场泥潭,这样的IT公司绝对不宜久留
  19. Rsyslog Properties and the Property Replacer
  20. sys_guid()函数解析

热门文章

  1. NOIP 2015 提高组 初赛
  2. SpringCloud 组件 熔断器Hystrix
  3. Rust HashMap 源码分析
  4. 浅析spack较受关注的场景
  5. linux安装redis选择那个版本,linux下编译安装redis服务与配置
  6. 通过“随航”将 iPad 用作 Mac 的第二个显示屏
  7. P2P网络通讯程序(c#)
  8. 这样和HR小姐姐谈薪,offer涨3K!
  9. 二维Gabor 滤波加速
  10. GridFS在nodejs中的应用