【发布时间】:2009-05-11 17:10:56
【问题描述】:
我正在编写一个托管 IronPython 1.1 的 Excel 加载项,我想 将 Excel.Application COM 对象提供给 PythonEngine 实例。
我的 C# 可以很好地访问 COM 对象的成员。然而,当我 IronPython 脚本访问 COM 对象的成员,我得到一个 “System.ArgumentException:'System.Int32' 类型的对象不能 转换为类型 'System.UInt32&'。”
这是我托管 IronPython 1.1 的 C# 代码:
public void ExecuteFile(string path) {
// see if COM object works
Debug.WriteLine(Globals.ThisAddIn.Application.ActiveWindow.Caption);
engine.Globals.Add("excel", Globals.ThisAddIn.Application);
try
{
engine.ExecuteFile(path);
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
}
这是我的 IronPython 测试脚本:
excel.ActiveSheet.Range['A1'].Value2 = 42 // 抛出上述异常
【问题讨论】:
-
您是否尝试过通过 C# 执行您的 python 脚本正在执行的操作?那样有用吗?我知道,您说访问可以正常工作,但我只是想确定一下。
-
我试过了。例如,这行 C# 打印单元格 A4 的值: Debug.WriteLine("C#: " + \ this.Range["A4", missing].Value2.ToString() );虽然这行 python 引发了上述异常: Debug.WriteLine("Python: " + \ sheet.Range["A4", Missing].Value2.ToString() ) 其中 'sheet' 是提供给托管 ironpython 引擎的变量.
-
几个 Excel COM 方法和属性可以正常工作(Application.Visible 可以 IIRC),但大多数都失败了,除了提到的异常。我尝试做一个针对 Word 的类似项目,它似乎工作得很好。我正在运行 VS2008、Office2007、Vista SP1。
标签: excel com ironpython