我正在尝试使用SSIS在SQL Server数据库表中加载csv文件。 目前,在加载文件之前,我们在excel中打开文件,并将列B的格式从General更改为Number。 (如果没有这样做,则加载该列的错误数据)
例如,下面的第4行是日期,但在加载之前,我们将列B的格式从General更改为Number。 然后将其转换为值42767(正确的数据)
Column A Column B
-----------------
1. 11622
2. IZED
3. DGA-435
4. 1/02/2017
现在我们必须自动化这个过程并使用一些逻辑,这可以在SSIS中完成吗? 请建议。
谢谢, AJ
答案 0 :(得分:1)
您可以使用Vb.net (或c#)脚本并使用Microsoft.office.Interop.Excel
库
注意:您必须将Microsoft.Office.Interop.Excel.dll
文件添加到以下目录(.Net Framework dll目录)C:\Windows\Microsoft.NET\Framework\v2.0.50727
和(sql server data tools dll目录)C:\Program Files\Microsoft SQL Server\100\DTS\Binn
(使用visual studio 2005和sql 2008)然后在脚本任务中添加此dll作为参考
Imports Microsoft.Office.Interop.Excel
Public Sub Main()
Dim m_XlApp As Application
m_XlApp = New Application
m_XlApp.visible = False
m_XlApp.DisplayAlerts = False
Dim m_xlWrkbs As Workbooks = m_XlApp.Workbooks
Dim m_xlWrkb As Workbook
m_xlWrkb = m_xlWrkbs.Open(strFile) 'strFile must contains the fule path ex: C:\1.xls
m_xlWrkb.DoNotPromptForConvert = True
Dim m_xlsheet As Worksheet = w.Sheets(1)
'Change the second column to number
m_xlsheet.Cells(1,2).EntireColumn.NumberFormat = "0"
m_xlWrkb.Save()
m_xlWrkb.Close(SaveChanges:=True)
m_XlApp.Quit()
End Sub
注意:如果您决定使用脚本任务实现此目的,则必须了解如何在脚本任务中添加自定义引用
可能有帮助的链接