2015-01-26 3 views
3

Я запускаю некоторый код C# как часть компонента сценария, работающего в моем пакете SSIS. Я пытаюсь открыть файл Excel и изменить имя листа перед импортом файла на следующем шаге моего пакета SSIS. Я получаю сообщение об ошибке в строке, где я пытаюсь инициализировать «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

+1

У меня также были проблемы с «ActiveSheet» не так давно, но не помню, была ли такая же ошибка. Я исправил это, добавив ссылку на ** Microsoft.CSharp.dll **. Надеюсь, это поможет. – Darka

+0

Спасибо Darka, добавив ссылку на Microsoft.CSharp.dll, позаботился об этом. Спасибо за вашу помощь! –

ответ

0

я пропускал ссылку на «Microsoft.CSharp.dll» в моей задаче сценария SSIS. Чтобы добавить ссылку в Visual Studio 2012, нажмите «Проект», «Добавить ссылку», затем на вкладке «Структура» найдите «Miscrosoft.CSharp», установите соответствующий флажок и нажмите «ОК».

2

Во-первых, добавьте ссылку на Microsoft Excel Interop DLL. Вы делаете это, щелкнув правой кнопкой мыши папку «Ссылки» в обозревателе решений. Затем нажмите «Добавить ссылку».

AddingReference

Нажмите на вкладке COM в окне «Добавить ссылку» и прокрутите вниз к версии объекта в Excel библиотеки (я выбрал 15, но вы можете выбрать другой вариант). Затем нажмите «ОК». SelectingObjLib

Теперь, похоже, вы используете заявление должно сделать что-то вроде этого:

using Excel = Microsoft.Office.Interop.Excel; 

Кроме того, обратите внимание, что ваш конструктор oXL теперь может быть просто

oXL = new Excel.Application(); 
+0

Спасибо Соррелл. Я попытался повысить ваш ответ как полезный, но, похоже, у меня недостаточно очков репутации для этого. В этом случае исправление должно было добавить ссылку на «Microsoft.CSharp.dll». Спасибо за вашу помощь! –

Смежные вопросы