我有一个简单的包,可以从 SQL Server 中提取数据并将其写入 Excel 电子表格。
我为什么要这样做:问题是其中一列的值大于 255 个字符,这会导致错误。我已经尝试了不同的方法来寻找解决方案,但到目前为止还没有成功。
因此,我在 Excel 模板中创建了虚拟行,该行能够接受超过 255 个字符。加载数据后,我需要删除该虚拟行。
我对C#了解不多。如何使用 SSIS 脚本任务 C# 删除 Excel 目标中的第二行?我是否需要创建保存路径文件夹和文件名的变量?
然后如何将这些变量映射到我的 C# 代码?
最佳答案
您可以在脚本任务中使用 Microsoft.Office.Interop.Excel.dll
库来实现此目的。
您可以使用类似的代码:
注意:我假设文件路径变量名称是 FilePath
。请记住在脚本任务只读变量(在脚本编辑器中)中选择 FilePath
变量。另外,不要忘记添加 Microsoft.Office.Interop.Excel.dll
作为脚本任务中的引用
Imports Microsoft.Office.Interop
Public Sub Main()
Dim strFile as String = Dts.Variables("FilePath").Value
Dim m_XlApp = New Excel.Application
m_XlApp.visible = False
m_XlApp.DisplayAlerts = False
Dim m_xlWrkbs As Excel.Workbooks = m_XlApp.Workbooks
Dim m_xlWrkb As Excel.Workbook
m_xlWrkb = m_xlWrkbs.Open(strFile)
m_xlWrkb.DoNotPromptForConvert = true
Dim m_XlWrkSheet As Excel.Worksheet = m_xlWrkb.Worksheets(1)
m_XlWrkSheet.Cells(2, 1).EntireRow.Delete(Excel.XlDeleteShiftDirection.xlShiftUp)
m_xlWrkb.Save()
m_xlWrkb.Close(SaveChanges:=True)
Marshal.ReleaseComObject(m_xlWrkb)
Marshal.ReleaseComObject(m_xlWrkbs)
m_XlApp.Quit()
Marshal.ReleaseComObject(m_XlApp)
End Sub
关于c# - 如何使用SSIS脚本任务删除Excel目标中的第二行? SQL Server 2012,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50630781/