在带有蓝色棱镜的Excel工作表中格式化数据

时间:2018-07-09 17:20:28

标签: excel vba excel-vba blueprism

我正在尝试进行重复检查,其中将各种数据从网站中提取出来并与主列表进行比较,该主列表存储在Excel中。来自网站的信息是从具有换行符的表中读取的。这些中断将转换为它们最初存储在其中的数据集合。来自我们网站的一些数据最终被写入Excel的主列表中。因此,当我将主列表读回Blue Prism进行重复检查时,将具有换行符的行作为多行写入到集合中(例如,我应该在集合中有7行,但现在有42行)。由于这两个集合之间的行并不完全相同,因此在运行时,自动化程序不会识别重复项。

解决此问题的最简单方法是,一旦读取数据,就可以使集合行没有换行符。我尝试在没有运气的情况下使用计算阶段。我不确定是否确实可以做到这一点,但希望能向您推荐。

2 个答案:

答案 0 :(得分:0)

记录一个Excel宏以在Excel中进行数据排序/清理(可能是文本到列等),然后通过使用操作阶段和MS Excel将宏的运行作为Blue Prism流程的一部分包括在内VBO-运行宏。获取创建Excel实例的过程(并在该阶段创建一个句柄数据项),然后使用“打开工作簿”(无论您将宏存储在哪个工作簿中),然后使用MS Excel VBO-运行宏(使用与之前创建的相同的句柄)并输入“宏”的名称。)

答案 1 :(得分:0)

这听起来好像是MS Excel VBO正在从Excel Worksheet批发中获取数据。
这就是说它正在访问工作表表,复制单元格值而不是单元格格式数据,然后将这些值转储到BP集合中。
由于它在填充集合时没有带任何原始的单元格格式数据作为参考,因此它只是根据弯度/换行符拆分值。因此,您的收藏是基于此而不是原始的工作表单元组织的。
如此说来,就可以解决!


解决方案1 ​​
通过逐个循环遍历Excel工作表,蛮力强制将传入的Excel单元格数据的组织组织到集合中。
运行一个循环,在该循环中,BP进入Excel工作表并获取它遇到的第一个填充的单元格。对数据运行格式化/清理 Calculation 阶段。将单元格值转储到单个收集字段中。
重复。

这是……不明显,充其量是昂贵的,对于任何中型或大型数据集都不建议这样做。但这绝对是在到达集合之前进行字符串操作和值比较的最佳方法。由于这听起来像是您使用的是Master模板,所以您还应该知道数据的预期格式。
通过此方法,您可以在 Calculation 阶段中实现Trim()Concat()Split(),以便在将传入数据转储到集合之前更好地组织传入数据。

这基本上也是我认为您已经在尝试的方法,但是逐个单元而不是工作表逐行或逐表。
解决方案2
清理从网站获取的表数据,然后再将其转储到Excel工作表中。
这基本上是解决方案1 ​​,但相反。只需格式化/清除数据,然后再将其打入Excel工作表即可。
我不确定这是否比解决方案1 ​​更好,但是,你知道,这是...
解决方案3
在MS Excel工作表中设置单元格数据的格式。
通过使用拆分,修剪,合并或MS Excel VBO中包含的其他操作,基本上将Excel工作表中的单元格和单元格数据重新排列为更可预测的格式。您也可以使用Data-OLEDB实用程序对象来执行此操作,但这需要对SQL语法有一定的了解。
使用MS Excel VBO看起来像这样:

  • 获取Excel工作表数据批发并转储到集合中
  • 计算集合的行/字段
  • 该数字是否与您所需/期望的数据格式一致?
  • 如果不是,请让漫游器返回Excel工作表并通过删除回车符/换行符/其他任何内容来重新格式化单元格
  • 重复。

但是,我总是不愿意重新格式化任何原始数据源,因为当您更改了数据的原始结构时,很难找出问题出在哪里以及出了什么问题。因此,最好在进行任何操作之前始终复制工作表。


不幸的是,目前我无法访问我的BP环境,否则我将为您提供您需要执行任何操作的行为对象动作,这很糟糕。完成后,我将更新此答案。