【问题标题】:Unable to set active Excel sheet C#无法设置活动 Excel 工作表 C#
【发布时间】:2015-01-26 22:56:08
【问题描述】:

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

错误说明:“错误 1 ​​找不到编译动态表达式所需的一种或多种类型。您是否缺少引用?C:\Temp\Vsta\SSIS_ST110\VstaTP9LtckEMUWOXYp4Zy3YpQ\Vstau3xOw__Ey1kaOxXFoq0ff8g\ScriptMain.cs 107 26 ST_005c649f34584ed6873a7fde8 "

我有一段时间没有使用 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;
    }      

【问题讨论】:

  • 你能展示你的使用语句吗?你也编译成64位吗?
  • 不久前我在ActiveSheet 上也遇到了一些麻烦,但不记得是否有同样的错误。我通过添加对 Microsoft.CSharp.dll 的引用来修复它。我希望这会有所帮助。
  • 感谢 Darka,添加对 Microsoft.CSharp.dll 的引用处理了它。感谢您的帮助!
  • Darka,您能否重新发表您的评论作为答案,以便我感谢您回答这个问题?

标签: c# excel ssis


【解决方案1】:

首先,添加对 Microsoft Excel 互操作 DLL 的引用。您可以通过右键单击解决方案资源管理器中的 References 文件夹来执行此操作。然后点击添加引用。

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

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

using Excel = Microsoft.Office.Interop.Excel;

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

oXL = new Excel.Application();

【讨论】:

  • 谢谢索雷尔。我试图将您的回复视为有用,但似乎我还没有足够的声誉点来这样做。在这种情况下,修复是添加对“Microsoft.CSharp.dll”的引用。感谢您的帮助!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 2022-10-04
    • 1970-01-01
    相关资源
    最近更新 更多