Blueprism 添加行号到 Collection
Blueprism Add Row Number To Collection
我有一个从 Excel 导入的 collection。我想要一列告诉我记录号。这可能吗?
A)我不想有一个外部柜台
B) 我不想更新 excel 文件以包含行号列。
如果需要,我可以提供屏幕截图,但似乎无法找到添加我需要的功能。
我在想你是否可以这样做:
1. 将 excel 的内容导入到您的第一个 collection。
2. 创建一个新的 collection 然后创建一个阶段,通过循环
从第一个 collection 复制数据
好吧,我提出的解决方案将在某些 C# 代码块中使用一些 SQL。我的评论的不同之处在于我认为我可以在 SQL 查询中使用 MSSQL 语法,但事实并非如此(例如,ROW_NUMBER()
不起作用.. .),所以我不得不自己进行一些谷歌搜索和测试。但是,是的,它确实有效,而且废话已经够多了,您可以按照以下步骤操作:
创建一个新对象(建议名称"MS Excel - SQL")并在 Initialise 页面中,将 System.Data.OleDb
添加到 Namespace Imports 并将语言设置为 C#:
在同一个初始化阶段,在全局代码选项卡中插入以下代码:
public DataTable GetDataFromExcel (string filename,string sql)
{
DataTable dt;
OleDbConnection MyConnection;
DataSet DtSet;
OleDbDataAdapter MyCommand;
MyConnection = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+filename+" Properties=Excel 12.0;");
MyCommand = new System.Data.OleDb.OleDbDataAdapter(sql, MyConnection);
DtSet = new System.Data.DataSet();
MyCommand.Fill(DtSet);
dt = DtSet.Tables[0];
MyConnection.Close();
return dt;
}
单击确定,适当地重命名操作 1,例如"Excel Query with Row Number" 并插入一个新的代码阶段(建议也正确命名):
您至少需要文件路径、sheet 名称和输入查询,以及输出集合:
将变量放入 Start 和 End 阶段,并在 Code 选项卡中插入以下内容:
Results = GetDataFromExcel(@"" + File_Path + ";Extended", Query + " FROM [" + Worksheet_Name + "$]");
Results.Columns.Add("RowNumber", typeof(int));
int Row = 1;
foreach (DataRow ThisRow in Results.Rows)
{
ThisRow["RowNumber"] = Row;
Row++;
}
保存对象,您现在可以从进程视图调用此操作。文件路径和工作 sheet 名称和结果应该是直截了当的,对于查询,您可以使用 SELECT *
或 select 之类的特定列(推荐),例如 SELECT [Column 1], [Column 2]
.您的结果集合将包含这些列,还有一个名为 RowNumber
的附加列。您可以从此集合生成标识符(添加列,然后循环连接日期),或调整对象中的代码阶段以添加另一列并用连接的行和日期填充它(除了它作为对象不太灵活之后)。
我有一个从 Excel 导入的 collection。我想要一列告诉我记录号。这可能吗? A)我不想有一个外部柜台 B) 我不想更新 excel 文件以包含行号列。
如果需要,我可以提供屏幕截图,但似乎无法找到添加我需要的功能。
我在想你是否可以这样做: 1. 将 excel 的内容导入到您的第一个 collection。 2. 创建一个新的 collection 然后创建一个阶段,通过循环
从第一个 collection 复制数据好吧,我提出的解决方案将在某些 C# 代码块中使用一些 SQL。我的评论的不同之处在于我认为我可以在 SQL 查询中使用 MSSQL 语法,但事实并非如此(例如,ROW_NUMBER()
不起作用.. .),所以我不得不自己进行一些谷歌搜索和测试。但是,是的,它确实有效,而且废话已经够多了,您可以按照以下步骤操作:
创建一个新对象(建议名称"MS Excel - SQL")并在 Initialise 页面中,将
System.Data.OleDb
添加到 Namespace Imports 并将语言设置为 C#:在同一个初始化阶段,在全局代码选项卡中插入以下代码:
public DataTable GetDataFromExcel (string filename,string sql) { DataTable dt; OleDbConnection MyConnection; DataSet DtSet; OleDbDataAdapter MyCommand; MyConnection = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+filename+" Properties=Excel 12.0;"); MyCommand = new System.Data.OleDb.OleDbDataAdapter(sql, MyConnection); DtSet = new System.Data.DataSet(); MyCommand.Fill(DtSet); dt = DtSet.Tables[0]; MyConnection.Close(); return dt; }
单击确定,适当地重命名操作 1,例如"Excel Query with Row Number" 并插入一个新的代码阶段(建议也正确命名):
您至少需要文件路径、sheet 名称和输入查询,以及输出集合:
将变量放入 Start 和 End 阶段,并在 Code 选项卡中插入以下内容:
Results = GetDataFromExcel(@"" + File_Path + ";Extended", Query + " FROM [" + Worksheet_Name + "$]"); Results.Columns.Add("RowNumber", typeof(int)); int Row = 1; foreach (DataRow ThisRow in Results.Rows) { ThisRow["RowNumber"] = Row; Row++; }
保存对象,您现在可以从进程视图调用此操作。文件路径和工作 sheet 名称和结果应该是直截了当的,对于查询,您可以使用
SELECT *
或 select 之类的特定列(推荐),例如SELECT [Column 1], [Column 2]
.您的结果集合将包含这些列,还有一个名为RowNumber
的附加列。您可以从此集合生成标识符(添加列,然后循环连接日期),或调整对象中的代码阶段以添加另一列并用连接的行和日期填充它(除了它作为对象不太灵活之后)。