7

私はプログラミング/Pythonに比較的慣れていないので、助けていただければ幸いです。COM 経由で Excel を使用して、Excel ファイルを特定の形式で保存したいと考えています。コードは次のとおりです。

import win32com.client as win32 

def excel():
    app = 'Excel'
    x1 = win32.gencache.EnsureDispatch('%s.Application' % app)
    ss = x1.Workbooks.Add()
    sh = ss.ActiveSheet
    x1.Visible = True
    sh.Cells(1,1).Value = 'test write'
    ss.SaveAs(Filename="temp.xls", FileFormat=56)
    x1.Application.Quit()

if __name__=='__main__':
    excel()

私の質問は、コードが明示的にわからない場合、FileFormat を指定するにはどうすればよいかということです。ドキュメントを参照すると、FileFormat オブジェクトに関する参照が見つかります。XlFileFormat オブジェクトにアクセスして、その列挙値を見つけられるようにインポートする方法がわかりません。

ありがとう!

4

4 に答える 4

9

この質問は少し古くなっていますが、(私が行ったように)Googleからこのページにアクセスする人にとって、私の解決策は、Ericが提案したようwin32com.client.constantsに、アプリケーションオブジェクト自体ではなく、オブジェクトを介して定数にアクセスすることでした。これにより、VBEと同じように列挙型定数を使用できます。

>>> import win32com.client
>>> xl = win32com.client.gencache.EnsureDispatch('Excel.Application')
>>> C = win32com.client.constants
>>> C.xlWorkbookNormal
-4143
>>> C.xlCSV
6
>>> C.xlErrValue
2015
>>> C.xlThemeColorAccent1
5

また、ユーティリティを手動で実行しない限りmakepy、通常のwin32com.client.Dispatch(..)方法でアプリケーションを初期化すると定数が使用できない場合があります。これは、私が抱えていたもう1つの問題でした。(質問者が行うように)使用win32com.client.gencache.EnsureDispatch(..)すると、実行時にPythonバインディングがチェックされ、必要に応じて生成されます。

このActiveStateページが役に立ちました。

于 2011-03-24T01:10:52.663 に答える
2

COM を使用してクイックブックにアクセスすると、オブジェクトの定数メンバーで定義された定数に到達できました。コードは次のようになります (3 行目に興味があります)。

self._session_manager.OpenConnection2("",
                                      application_name,
                                      QBFC8Lib.constants.ctLocalQBD)

これがうまくいくかどうかはわかりませんが、これを試してください:

import win32com.client as win32 

def excel():
    app = 'Excel'
    x1 = win32.gencache.EnsureDispatch('%s.Application' % app)
    ss = x1.Workbooks.Add()
    sh = ss.ActiveSheet
    x1.Visible = True
    sh.Cells(1,1).Value = 'test write'
    ss.SaveAs(Filename="temp.xls", FileFormat=x1.constants.xlWorkbookNormal)
    x1.Application.Quit()

if __name__=='__main__':
    excel()

xlWorkbookNormal を、質問に投稿した X1FileFormat Web ページで選択しようとしている形式に置き換えます。

于 2009-10-29T23:21:01.433 に答える
1

原則として、VBA IDE のコードを Excel で事前に記録しておくと非常に便利です。このようにして、Python コード内で使用する必要がある定数などのすべての値を見つけることができます。また、より制御された環境内で機能することを確認することもできます。

于 2009-11-07T08:21:05.760 に答える
1

ファイル形式の定数はすべてここに記載されています

于 2009-10-29T23:49:30.633 に答える