0

我正在编写一个托管 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// 抛出上面提到的异常

4

2 回答 2

1

我相信要设置 .Value 你需要用数据类型“索引”它;改为设置 .Value2 更方便(可以直接设置)。那么如果在那个 Python 作业中使用 .Value2 而不是 .Value 会发生什么?

于 2009-05-04T16:27:24.003 回答
0

一篇带有解释和解决方案的好文章在这里:

http://codeidol.com/csharp/c-sharp-in-office/Working-with-Excel-Objects/Special-Excel-Issues/

基本上,我选择禁用包装 Excel COM 对象的 VSTO 代理。可以通过 AssemblyInfo.cs 中的这一行来完成:

[程序集:ExcelLocale1033(false)]

于 2009-05-11T09:10:56.867 回答