不使用Utility-Collection manipulation VBO,解决Work Queue Collection写入Excel覆盖问题
解决Blue Prism中Work Queue Collection写入Excel不覆盖已有数据的问题
Hey,我太懂你这个困扰了——每次往Excel写Work Queue数据都把之前的内容冲掉,还不能用Utility-Collection manipulation那个省心的VBO。其实核心问题就是你每次都从固定行开始写入,没找到Excel里的下一个空行。咱们不用复杂工具,靠MS Excel VBO就能搞定,一步步来:
第一步:先拿到Excel的最后一行有数据的行号
首先得搞清楚Excel里已经写到哪了,不然永远会从第一行开始覆盖。用MS Excel VBO里的**Get Last Used Row**动作,它会返回当前工作表中最后一条数据的行号:
- 如果是全新空白表,它会返回1,这时候咱们从第2行开始写(留第一行放表头)
- 如果已经有数据,就用返回的行号+1作为新数据的起始行
第二步:遍历Work Queue Collection的每条记录
用Blue Prism的Loop动作遍历你的Work Queue Collection,记得循环索引用默认的Loop Index变量(从0开始计数)。
第三步:逐行写入,精准定位不覆盖
在循环里,计算当前要写入的Excel行号:
当前写入行号 = Last Used Row + Loop Index + 1
(因为Loop Index从0开始,比如最后一行是5,第一条新记录就写在6行,完美衔接)
然后用MS Excel VBO的**Write Cell**动作,把Collection里的每个字段对应到Excel的列:
- 比如你的Collection有
QueueItemID、Status、ProcessedDate三个字段:- 写入
QueueItemID到单元格:"A" + 当前写入行号,值填Collection[Loop Index].QueueItemID - 写入
Status到单元格:"B" + 当前写入行号,值填Collection[Loop Index].Status - 写入
ProcessedDate到单元格:"C" + 当前写入行号,值填Collection[Loop Index].ProcessedDate
- 写入
额外小Tips
- 操作前一定要用
Open Workbook打开目标Excel,写完记得Close Workbook,避免锁表 - 如果需要加表头,先判断
Last Used Row是否为1:如果是,先把表头写入第1行,再从第2行开始写数据 - 别用
Write Range直接写整个Collection,除非你精准把起始行设为Last Used Row + 1,不然还是会覆盖
内容的提问来源于stack exchange,提问作者Raza Rahi
相关产品推荐
相关产品推荐

