读取 excel 源代码并根据 ssis 中的标题运行 sp
Posted
技术标签:
【中文标题】读取 excel 源代码并根据 ssis 中的标题运行 sp【英文标题】:Read an excel source and run the sp's based on headers in ssis 【发布时间】:2021-06-07 01:07:17 【问题描述】:我有一个 Excel 工作表 Sheet1$
,
Report1 | Report2 | Report5 | Report6 |
---|---|---|---|
value1 | value1 | value1 | value1 |
Two | value2 | value2 |
我在数据库中有几个 SP,这个工作表有 SP 的参数
根据工作表中的标题名称,我们必须传递参数并运行该 sp。
示例:
在此工作表中,我必须运行报告 1、报告 2、报告 5、报告 6,其中报告 3 和报告 4 不存在。
我必须相应地使用每列中的参数运行上述操作。 (注意:参数必须作为字符串传递) SP 的结果应再次保存在工作表中。
有人可以帮我解决这个问题吗?
提前致谢
【问题讨论】:
我必须运行 report1 吗?你的意思是运行一个SP? 是的。我必须根据报告标题运行相应的 SP。我有 6 个标题和 6 个 sp。基于excel中提到的标题。我们必须运行所需的报告 那么根据你分享的样本,只有5个SP会被执行? 根据Excel工作表参数,4个sp应该按照表头执行 【参考方案1】:我用过 ADODB。
片段(函数 SQL_EXEC...)
Dim B As Boolean
Dim C As ADODB.Command
Dim I As Long
Dim P As ADODB.Parameter
Dim V As Variant
Set C = New ADODB.Command
C.ActiveConnection = glob_CONNECT
C.CommandType = adCmdStoredProc
C.CommandText = X.SQL_Name
' bind Inputparameter
If X.NInParams > 0 Then
For I = 1 To X.NInParams Step 1
Set P = C.CreateParameter(X.InParam(I).SQL_Name, _
X.InParam(I).ADODB_Type, _
adParamInput, _
X.InParam(I).SQL_Size, _
X.InParam(I).SQL_Value)
C.Parameters.Append P
Next
End If
' bind Outputparameter
If X.NOutParams > 0 Then
For I = 1 To X.NOutParams Step 1
Set P = C.CreateParameter(X.OutParam(I).SQL_Name, _
X.OutParam(I).ADODB_Type, _
adParamOutput, _
X.OutParam(I).SQL_Size)
C.Parameters.Append P
Next
End If
' Execute SP (Errors are possible!)
On Error GoTo 0
On Error Resume Next
C.Execute
' Error?
If Err.Number <> 0 Then
SQL_EXEC = False
Exit Function
End If
' Fetch Output
If X.NOutParams > 0 Then
For I = 1 To X.NOutParams Step 1
V = VNormExec(C.Parameters(X.OutParam(I).SQL_Name), X.OutParam(I).SQL_Type)
X.OutParam(I).SQL_Value = V
Next
End If
【讨论】:
以上是关于读取 excel 源代码并根据 ssis 中的标题运行 sp的主要内容,如果未能解决你的问题,请参考以下文章
SSIS Excel 连接管理器:文件只能在选择了错误的 Excel 版本时才能读取