【发布时间】: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,您能否重新发表您的评论作为答案,以便我感谢您回答这个问题?