2017-09-19 25 views
0

如何在SSIS中加載多張Excel文件,其中包含兩張工作表。它包含標題信息。我試圖foreach循環容器裝載數據 錯誤我得到的是: [SSIS.Pipeline]錯誤:「Excel源」驗證失敗並返回驗證狀態「VS_NEEDSNEWMETADATA」。如何在SSIS中加載多張Excel文件,並在頁面中添加頁眉信息

我試着從表中手動刪除標題行,並運行foreach循環容器,它工作得很好。

但在我的要求中,我將獲得標題行,然後在每張表中的空白行。 在這種情況下我該怎麼辦。 我相信我們需要使用腳本任務來消除頭文件,並從文件中跟隨空行並讀取其餘記錄。

我的問題是我在C#代碼邏輯不好。

非常感謝您的幫助。 謝謝 swathi

回答

0

下面的腳本任務將從每個工作表文件中刪除前2行(你需要在SSIS創建變量「ExcelFilePath」,並把它傳遞給任務,隨着'系統:: TASKNAME'):

public void Main() 
{ 
    MainTask(); 

    GC.Collect(); 
    GC.WaitForPendingFinalizers(); 
} 

private void MainTask() 
{ 
    xl.Application xlApp = null; 
    xl.Workbook excelFile = null; 
    string excelFilePath = Dts.Variables["User::ExcelFilePath"].Value.ToString(); 
    string thisTask = Dts.Variables["System::TaskName"].Value.ToString(); 

    try 
    { 
     xlApp = new xl.Application(); 

     excelFile = xlApp.Workbooks.Open(excelFilePath); 

     xlApp.DisplayAlerts = false; 

     foreach (xl.Worksheet ws in excelFile.Worksheets) 
     { 
      ws.Rows["1:2"].EntireRow.Delete(); 
     } 

     xlApp.DisplayAlerts = true; 

     excelFile.Save(); 
     excelFile.Close(); 

     xlApp.Quit(); 

     Dts.TaskResult = (int)ScriptResults.Success; 
    } 

    catch (Exception ex) 
    { 
     Dts.Events.FireError(0, thisTask, ex.Message, String.Empty, 0); 

     if (excelFile != null) excelFile.Close(SaveChanges:false); 
     if (xlApp != null) xlApp.Quit(); 
    } 
} 

您需要將引用添加到 'COM'> 'Microsoft Excel中[版本號]對象庫'(你有哪個版本)和 '.NET'>「微軟.CSharp」。然後,您需要在'Namespaces'區域聲明using xl = Microsoft.Office.Interop.Excel;

相關問題