2015-01-26 80 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