1

スクリプトの結果を Excel スプレッドシートにエクスポートしています。すべて正常に動作し、大量のデータ セットを SpreadSheet に入れましたが、時々エラーが発生します。

             File "C:\Python26\lib\site-packages\win32com\client\dynamic.py", line 550, in __setattr__
                self._oleobj_.Invoke(entry.dispid, 0, invoke_type, 0, value)
            pywintypes.com_error: (-2147352567, 'Exception.', (0, None, None, None, 0, -2146777998), None)***

入力データの形式の問題ではないと思います。いくつかの異なるタイプのデータ文字列、int、float、lists を配置しましたが、正常に動作します。sript を 2 回目に実行すると、問題なく動作します。エラーは発生しません。どうしたの?

PS。これはエラーを生成するコードです。奇妙なのは、常にエラーが発生するとは限らないことです。実行の 30% がエラーになるとします。:

import win32com.client
def Generate_Excel_Report():    
    Excel=win32com.client.Dispatch("Excel.Application")
    Excel.Workbooks.Add(1)    
    Cells=Excel.ActiveWorkBook.ActiveSheet.Cells
    for i in range(100):
        Row=int(35+i)
        for j in range(10):                      
            Cells(int(Row),int(5+j)).Value="string"
    for i in range(100):
        Row=int(135+i)
        for j in range(10):

            Cells(int(Row),int(5+j)).Value=32.32 #float

Generate_Excel_Report()

私にとって最も奇妙なのは、同じコード、同じ入力でスクリプトを何度も実行すると、エラーが発生する場合と発生しない場合があることです。

4

4 に答える 4

2

これは、同期 COM アクセス エラーである可能性が最も高いです。理由と回避策の詳細については、Python を使用して Excel で作業しているときにエラーが発生した場合の私の回答を参照してください。

ファイル形式/拡張子が違いを生む理由がわかりません。どちらの方法でも同じ COM オブジェクトを呼び出すことになります。このエラーに関する私の経験では、多かれ少なかれランダムですが、スクリプトの実行中に Excel を操作することで、エラーが発生する可能性を高めることができます。

于 2013-01-17T21:49:29.657 に答える
0

編集:それは物事を変更しません。エラーが発生しますが、leffが頻繁に発生します。.xlsxファイルを使用しているときに10回のシミュレーションに1回、3回のシミュレーションに1回。助けてください

問題は、私が開いていたファイルにありました。問題がなくなった.xlsxので保存しましたが、そうでした。したがって、注意してください。COMインターフェイスを使用しないでください。使用すると問題が発生します。.xls.xlsx

于 2010-06-07T09:15:03.933 に答える
0

Excelとのやり取りにxlwingsを使用しているときに同じエラーが発生しました。xlwings は、バックエンドで win32com クライアントも使用します。いくつかのデバッグの後、コードが実行され、Excel ファイル (データを含む) がフォーカスされていないときにこのエラーがポップアップすることに気付きました。この問題を解決するには、処理中のファイルを選択してコードを実行するだけで、常に機能します。

于 2020-11-02T05:21:08.833 に答える