无法设置活动Excel工作表C#

时间:2015-01-26 22:56:08

标签: c# excel ssis

我正在运行一些C#代码作为在我的SSIS包中运行的脚本组件的一部分。我试图在我的SSIS包的下一步中导入文件之前打开Excel文件并更改工作表的名称。我在尝试初始化" oSheet"的行上收到错误。

错误指定:"错误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;
    }      

2 个答案:

答案 0 :(得分:2)

首先,添加对Microsoft Excel Interop DLL的引用。您可以通过右键单击解决方案资源管理器中的“引用”文件夹来执然后单击“添加引用”。

AddingReference

单击"添加参考"中的COM选项卡;窗口,并向下滚动到您的Excel对象库版本(我选择了15,但您可以选择其他版本)。然后单击确定。 SelectingObjLib

现在,看起来你的using语句应该是这样的:

using Excel = Microsoft.Office.Interop.Excel;

另外,请注意您的oXL构造函数现在可以只是

oXL = new Excel.Application();

答案 1 :(得分:0)

我在SSIS脚本任务中缺少对“Microsoft.CSharp.dll”的引用。若要在Visual Studio 2012中添加引用,请单击“项目”,“添加引用”,然后在“框架”选项卡中滚动以查找Miscrosoft.CSharp,选中相应的框,然后单击“确定”。