0

IronPython 1.1をホストするExcelアドインを作成していて、Excel.ApplicationCOMオブジェクトをPythonEngineインスタンスに提供したいと考えています。

私のC#はCOMオブジェクトのメンバーに問題なくアクセスできます。ただし、IronPythonスクリプトがCOMオブジェクトのメンバーにアクセスすると、「System.ArgumentException:タイプ「System.Int32」のオブジェクトをタイプ「System.UInt32&」に変換できません」というメッセージが表示されます。

これがIronPython1.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 割り当てで .Value の代わりに .Value2 を使用するとどうなるでしょうか?

于 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 に答える