各位同胞,首先感谢大家的关注,因为这是我更新下去的动力,笔芯。
那么,这节课我们来说说如何用云扩RPA来切割有很多行数据的Excel文件,比如在实际项目中我们拿到一个有50000多行数据的Excel文件,而文件太大一方面导致RPA在读写时会严重影响速度,(当然影响速度并不是RPA本身的问题,我们可以尝试用手动打开一个有这么多行数据的Excel文件,速度也会很慢。)另外一方面有些网页只支持一次性处理5000多条数据,举例:企查查批量查询企业信息时明确写着一次处理5000条数据,那么在这种情况下,切割文件是必须要做的事,也因此,这成为我们本节课要讲的内容的一个重要理由(该内容为一个实际业务的一部分)。
接下来,我们就看看具体操作。
准备工作:
1)准备开发流程的电脑,请打开云扩学院链接查看云扩RPA编辑器运行的硬件&软件要求(https://academy.encoo.com/zh-cn/wiki/Studio/HarewareAndSoftwareRequirements.md?uuid=1bb922bd-c25d-4921-9241-f13ee45d295f)
2)打开云扩官网(https://www.encoo.com/)下载编辑器并安装。
本次课程介绍:
1)流程名称:数据切割机器人,该机器人可以把有很多行数据的Excel文件依据用户自定义的数据行数来切割为多个文件,方便后续流程的操作。
原文件如下图所示,请看文件大小,内含51360行数据:
流程运行后文件切割为很多小文件:
2)流程开发设计如下:
大家也可以想想还有什么其他方法来切割,重点是流程设计要合理,能使机器人处理数据时尽量节省时间,这也是大部分用户所关注的点。
3)流程开发步骤:
打开云扩编辑器,选择“项目”,并点击“新建项目”进行创建项目。
a. “打开Excel文件、获取末行号,末列号”部分
打开MainFlow窗口,拖入Office Excel中的“打开/新建”组件,设置原文件路径参数/变量:
拖入“获取末行号”并设置相应属性:
以相同方式处理“获取末列号”:
因为获取的末列号为数字,我们需要转换为Excel对应的列号字母,如列号1对应A列,我们可以用"执行C#代码"控件来转换,写一小段代码:
附上代码段:
StringBuilder letter = new StringBuilder();do {
--num;int mod = num % 26; // 取余
letter.Append((char) (mod + 'A')); // 组装字符串
num = (num - mod) / 26; // 计算剩下值
} while (num > 0);char[] arr = letter.ToString().ToCharArray();
Array.Reverse(arr);
line = new String(arr);
Console.WriteLine(line);
b. “更改原文件名”部分
拖入“赋值”组件定义“新文件路径”,为方便后续循环操作,我们将原文件名称后面添加文件序号,以此来区别新增文件。
附上将来会有用的C#获取文件路径、文件名、文件后缀等方法
string filePath = "C:\\1.txt";
string str = "获取文件的全路径:" + Path.GetFullPath(filePath);
str = "获取文件所在的目录:" + Path.GetDirectoryName(filePath);
Console.WriteLine(str);
str = "获取文件的名称含有后缀:" + Path.GetFileName(filePath);
str = "获取文件的名称没有后缀:" + Path.GetFileNameWithoutExtension(filePath);
str = "获取路径的后缀扩展名称:" + Path.GetExtension(filePath);
str = "获取路径的根目录:" + Path.GetPathRoot(filePath);
拖入“复制/移动文件” 控件并设置对应变量
c.“根据自定义数据行数换算循环次数” 部分
拖入“循环操作(While)”控件,并输入循环条件。(循环次数换算思路:如果原文件数据最大行数为65,我们希望切割为每个文件含有10行数据的小文件,那么需要循环6次,加上原来的1个文件,总共切割为7个小文件(65/10 = 6余5),用C#即为向上进位取整,用方法Math.Ceiling)
d.从前一个文件中读取需要分割的部分
e.“新建文件并粘贴数据”部分
新建文件之前首先需要更改新文件路径,之前定义的文件名中加了文件序号,那么现在可以通过递增文件序号来给新文件命名。
用“赋值”控件来操作,如下图所示:
用“打开/新建”控件新建文件:
用“写入区域”控件写入上步操作中读取的列头与数据:
同样方法写入数据:
f.从前一个文件中删除5000行以外的数据
这部分我们用“执行宏”控件来完成,当然,也可以用Office Excel中的“删除数据”来操作。只是在项目中有很多同学可能会用到执行宏,那么顺便讲讲“执行宏”控件该怎么使用。
首先,要记得,我们在上步操作“打开/新建”控件操作中勾选“启用宏”属性,如下图所示:
手动打开Excel,并录制删除数据的宏,根据需要定义变量:
拖入“执行宏”组件
至此,整个流程已开发完毕,可进行运行与调试。祝顺利!
若有问题,欢迎留言提问,若有更为简洁的开发思路,请直接砸向我吧,一起学习、一起进步!