2015-01-26 81 views
3

我正在運行一些C#代碼作爲在我的SSIS包中運行的腳本組件的一部分。我試圖在我的SSIS包的下一步中導入文件之前打開Excel文件並更改工作表的名稱。我正在嘗試初始化「oSheet」的行上出現錯誤。無法設置活動的Excel工作表C#

錯誤指定:編譯一個動態表達所需「錯誤1種的一個或多個類型不能被發現是否缺少參考C:?\ TEMP \ VSTA \ SSIS_ST110 \ VstaTP9LtckEMUWOXYp4Zy3YpQ \ Vstau3xOw__Ey1kaOxXFoq0ff8g \ ScriptMain.cs 107 26 ST_005c649f34584ed6873a7fde862ab2c9 「

我沒有使用C#一段時間,並希望有人能指出我在正確的方向。提前致謝!

代碼:

 public void Main() 
    { 
     String s = (String)Dts.Variables["FilePath"].Value; 
     String FileName = s.Substring(45,s.Length - 45); //45 = hardcoded value for known index of the start of the file name 
     MessageBox.Show(FileName); 
     Excel.Application oXL; 
     Excel._Workbook oWB; 
     Excel._Worksheet oSheet; 
     Excel.Range oRng; 

     try 
     { 
      oXL = new Microsoft.Office.Interop.Excel.Application(); 
      oXL.Visible = false; 
      oWB = (Excel.Workbook)oXL.Workbooks.Open(s); 
      oSheet = (Excel._Worksheet)oWB.ActiveSheet; 
      //oSheet = (Excel._Worksheet)oXL.ActiveSheet; 
      //oSheet = (Excel._Worksheet)oWB.Worksheets.Item(0); 
      //oSheet = (Excel._Worksheet)oXL.Worksheets[FileName]; 
      oSheet.Name = "NLTWNH"; 
      oWB.Close(s); 

     } 
     catch (Exception ex) 
     { 
      //do nothing 
     } 

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

你可以顯示你的使用語句。你也編譯爲64位? – LochnessLAM 2015-01-27 04:16:13

+1

不久前,我也遇到過'ActiveSheet'問題,但不記得是否有相同的錯誤。我通過添加對** Microsoft.CSharp.dll **的引用來修復它。我希望這有幫助。 – Darka 2015-01-27 07:41:06

+0

感謝Darka,添加對Microsoft.CSharp.dll的引用照顧它。謝謝你的幫助! – 2015-01-28 15:54:54

回答

0

我缺少一個參考到我的SSIS腳本任務中的「Microsoft.CSharp.dll」。要在Visual Studio 2012中添加引用,請單擊「項目」,「添加引用」,然後在「框架」選項卡中滾動以找到Miscrosoft.CSharp,選中相應的框,然後單擊「確定」。

2

首先,添加對Microsoft Excel互操作DLL的參考。您可以通過右鍵單擊解決方案資源管理器中的引用文件夾來完成此操作然後點擊添加參考。

AddingReference

單擊「添加引用」窗口中的COM選項卡上,向下滾動到你的Excel的對象庫(我選擇了15,但你可以選擇另一種版本)的版本。然後點擊確定。現在 SelectingObjLib

,它看起來像你使用的語句應該做這樣的事情:

using Excel = Microsoft.Office.Interop.Excel; 

此外,請注意您的OXL構造,現在只是

oXL = new Excel.Application(); 
+0

謝謝Sorrell。我試着將你的回覆提升爲有用,但看起來我還沒有足夠的聲望點。在這種情況下,修復程序是添加對「Microsoft.CSharp.dll」的引用。謝謝你的幫助! – 2015-01-28 15:57:54