RPA流程开发第二课- 如何切割大文件(Excel)

348
0
0
Shirley
一级
楼主
  • 收藏
  • 分享
2021-02-8 2:48:49

    Hello,小伙伴们,这节课我们来说说如何用云扩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,并录制删除数据的宏,根据需要定义变量。

拖入“执行宏”组件

至此,整个流程已开发完毕,可进行运行与调试啦!

若有问题,欢迎留言提问,若有更为简洁的开发思路,请直接砸向我吧,一起学习、一起进步!

还没有回帖

快来抢占沙发吧~

我要回帖

登录后回帖