officeopenxml excelpackage 需要安装excel嘛_使用SAP iRPA自动操作Excel

之前Jerry的文章 使用ABAP操作Excel的几种方法,介绍的是通过ABAP这门编程语言去操作Excel的方法。

除了编程语言之外,SAP新发布的SAP Intelligent Robotic Process Automation(简称SAP iRPA),提供了强大的企业级自动化流程解决方案,善加利用,可以在不需要编程的情况下,像使用编程语言一样灵活地操作Excel.

我们来看个具体而又简单的例子,用SAP Intelligent Robotic Process Automation操作一个Excel文件,往里面的cell写入一个字符串,设置背景色然后关闭。

在动手做这个例子之前,你也许需要先阅读这两篇文章,以了解SAP iRPA的上下文。

SAP智能机器人流程自动化解决方案

使用SAP iRPA Studio创建的本地项目,如何部署到SAP云平台上?

打开SAP Intelligent Robotic Process Automation Desktop Studio,导入SAP预置的操作Excel的nodejs脚本库文件。

719f76ee66e61b82e611e34389ebbb30.png

在库文件里选择Excel Integration. 从下图能发现,SAP iRPA除了Excel之外,也支持Office里其他应用比如Word和Outlook.

6b69a5361e0a8dfb9328755fca88d051.png

新建一个名叫jerryExcel的workflow,在工作流的activities面板里输入seq,找到类型为Sequence的Flow控件,该控件允许我们在工作流里定义一系列顺序执行的步骤。

c8b41f5ccde2b678eaf12a27b00f39c3.png

把Sequence控件拖拽到工作流编辑区域里,双击,就可以定义需要执行的详细步骤了。

ae4d6329ad30b274780efcb755773443.png

Excel Lib里预置了很多围绕Excel进行的操作,如Init Excel,Open Excel,Close Excel等等,每个操作对应一段nodejs代码。

3d50b5301477d9210e3a7c699d99b418.png

比如把Init Excel拖拽到Sequence控件的Activities列表里之后,一旦保存,会立即看到自动生成的nodejs代码。Excel Lib里每个step,都对应一段nodejs代码。如此一来,即使SAP Intelligent Robotic Process Automation Desktop Studio的使用者没有编程基础,也能开发出能操作Excel的自动化工作流。

e9753dd25abb7fd07a4c52346dee5c6f.png

上图的Init Excel步骤是所有操作Excel的工作流Seuqence都必须的初始化步骤。初始化完毕后,把Open Excel这个步骤拖拽到Sequence Activities里,指定要打开的Excel文件路径,在Desktop Studio里有红色提示。

9a2fb3f11bfd73220244e9008198b9c8.png

把本地Excel文件的绝对路径维护进去:

66466c8e1bd2e83fdcdff642862af1aa.png
50a106fe9002f55a0fff72d4a6054e8c.png

第三步,设置打开的Excel第1行,第1列的值为'Hello Jerry':

773d3bae2b69c7b123700eef50e6c3c4.png

第四步,设置第1行第1列的背景色:

e9a281cafca8b5d0869312612a33e37e.png

将修改之后的Excel另存成另一个文件。执行这个项目,就会在temp文件夹里看到另一个Excel文件。

c328c831fcdb34aa7fd53965876bb7cd.png

这个例子非常简单,让我们来看看它的工作原理。

切换到Script面板,在第45行打开Excel的代码处设置断点,然后单步调试:

dfdb4c50d184471338bb94e77c3fffd7.png

断点一旦触发,我们能观察到任务栏里出现一个Excel的界面,没有显示任何内容:

76abaf1637b552aa7609d6138d8a50c6.png

在任务管理器能看到该应用通过参数/automation -Embedding的方式启动:

ebf8eecc5a62ca41a9777fcd0c2c448c.png

我们想单步调试进ctx.excel.file.open方法内,发现断点并没有在open方法内停下来,而是直接执行完这个方法,此时任务栏上的应用标题从Excel更换成了open方法打开的文件名:1.xlsx.

f93026c39967aedbfe0560275f811155.png

从以上任务管理器里观察到的/automation和embedding参数,我们已经能判断出,SAP iRPA操作Excel的实现原理,和Jerry文章 使用ABAP操作Excel的几种方法 中提到的第一种方法,即通过OLE方式操作Excel是一致的。

如果非要刨根究底,可以到SAP iRPA SDK安装目录下,打开except.js文件,找到open方法的实现,发现其调用了_excelApp对象的WorkBooks.Open方法:

ac433cd4e5c53b4e4822b6068ce54878.png

而_excelApp对象,在initialize方法里通过GetObject从OLE对象Excel.Application中获取:

0e83e772333546e4e5cec773720960b4.png

还记得Jerry文章 使用ABAP操作Excel的几种方法 里提到的ABAP OLE实现么?也是采用同样的方式获取Excel应用对象,连编码方式都如出一辙。

e9a4350c2eca24d02d8030c44eafcd00.png
a97157cf942329294c5d24b2892703fd.png

既然已经聊到JavaScript操作Excel的话题了,就顺便提一句,目前另一种流行的JavaScript操作Excel的开源库,即Node-xlsx,原理是基于Office Open XML协议去解析Excel文件,ABAP也有对应的实现:CL_XLSX_DOCUMENT.

be7ec29b5727070feb981865a0d130af.png

这种方式较之SAP iRPA采用的OLE解决方案,优势在于避免了对Excel应用的依赖,多用于服务器端对Excel的处理任务。

至此,采用SAP技术操作Excel的方案大家族里,又增添了一位新的成员:SAP iRPA. 希望本文对大家开阔眼界有所帮助,感谢阅读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值