Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Excel加载项运行托管的ironpython 1.1?_Excel_Com_Ironpython - Fatal编程技术网

如何从Excel加载项运行托管的ironpython 1.1?

如何从Excel加载项运行托管的ironpython 1.1?,excel,com,ironpython,Excel,Com,Ironpython,我正在编写一个承载IronPython 1.1的Excel加载项,我想 向PythonEngine实例提供Excel.COM应用程序对象 我的C#可以很好地访问COM对象的成员。然而,当我的 IronPython脚本访问COM对象的成员,我得到一个 System.ArgumentException:无法创建“System.Int32”类型的对象 已转换为类型“System.UInt32&” 下面是我托管IronPython 1.1的C#代码: public void ExecuteFile(st

我正在编写一个承载IronPython 1.1的Excel加载项,我想 向PythonEngine实例提供Excel.COM应用程序对象

我的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
//引发上述异常

我认为要设置.Value,您需要使用数据类型“索引”它;设置.Value2更方便(可以直接设置)。那么,如果在Python赋值中使用.Value2而不是.Value,会发生什么情况呢?

这是一篇很好的文章,提供了一些解释和解决方案:

基本上,我选择禁用包装Excel COM对象的VSTO代理。可以使用AssemblyInfo.cs中的此行完成此操作:


[assembly:ExcelLocale1033(false)]

您是否尝试过通过C#执行python脚本正在执行的操作?这样行吗?我知道,你说访问很好,但我只是想确定一下,我试过了。例如,这行C#打印单元格A4的值:Debug.WriteLine(“C#::“+\this.Range[“A4”,缺少].Value2.ToString());而这一行python抛出了提到的异常:Debug.WriteLine(“python:”+\sheet.Range[“A4”,缺少].Value2.ToString()),其中“sheet”是提供给托管ironpython引擎的变量。一些Excel COM方法和属性工作正常(Application.Visible是ok IIRC),但大多数都因提到的异常而失败。我试着做了一个类似的针对Word的项目,它似乎工作得很好。我正在运行VS2008、Office2007、Vista SP1。