3

Python で小さなスクリプトを作成して、Excel 互換の xml ファイル (拡張子 xls で保存) を生成しました。ファイルは部品データベースから生成されるので、抽出したデータで注文できます。

部品注文サイトでは、エクセルファイルをインポートすることで、自動で注文が成立します。ここでの問題は、注文を行うたびに、インポートを機能させるために、Excel を開いて、タイプ MS Excel 97-2003 の拡張子 xls でファイルを保存する必要があることです。Excel ドキュメントはまったく同じように見えますが、メモ帳で開くと、XML が表示されなくなり、バイナリ ダンプのみが表示されます。

このプロセスを自動化する方法はありますか?バッチ ファイルを実行するか、Python スクリプトに行を追加して、適切な形式に変換しますか?

(以前にも質問されたことは知っていますが、答えられたことはありません)

4

1 に答える 1

5

これには 2 つの基本的なアプローチがあります。

あなたは最初の質問について尋ねました: ファイルを開いて保存するための Excel の自動化。実際には、これを行うには 2 つの方法があります。2 つ目は、Excel の助けを借りずに Python で直接ファイルを作成できる Python ツールを使用することです。そう:

1a: 自動化インターフェイスを介して Excel を自動化します。

Excel は、COM オートメーションを通じて、外部アプリによって制御されるように設計されています。Python には、 内に優れた COM オートメーション インターフェイスがありpywin32ます。残念ながら、ドキュメントはそれほど優れたものではなく、Excel の COM オートメーション インターフェイスに関するドキュメントはすべて、JScript、VB、.NET、または C の生の COM 用に書かれてpywin32います。このwin32comような Excel を駆動するので、おそらく自分で理解できます。次のようになります。

import win32com.client
excel = win32com.client.Dispatch('Excel.Application')
spreadsheet = excel.Workbooks.Open('C:/path/to/spreadsheet.xml')
spreadsheet.SaveAs('C:/path/to/spreadsheet.xls', fileformat=excel.xlExcel8)

Excel が手元にある Windows ボックスを持っていないため、これはまったくテストされていません。そして、win32com からファイル形式名にアクセスする際に問題が発生し、同等の数値をパントして検索したことをぼんやりと覚えています (「fileformat xlExcel8」のクイック グーグルは、同等の数値が 56 であることを示し、それが 97-2003 の正しい形式であることを確認しますバイナリ xls)。

もちろん、Python で行う必要がない場合は、MSDN に JScript や VBA などの素晴らしい例がたくさんあります。

必要なドキュメントはすべてMSDNにあります( Office Developer Network for Excelが MSDN に統合され、404 ページになったようです)。Excel の最上位ページは、Excel 2013 開発者リファレンスへようこそ(別のバージョンが必要な場合は、上のナビゲーションで [Office クライアント開発] をクリックして別のバージョンを選択してください)。オブジェクト モデル リファレンス。Excel の組み込みヘルプでも、同じドキュメント (多くの場合、まったく同じ Web ページへのリンク) を見つけることができます。たとえば、ApplicationオブジェクトがWorkbooksプロパティを持っていることがわかります。これはWorkbooksオブジェクトであり、オブジェクトを返すメソッドがOpenあります。AddWorkbookオブジェクトには、値=を持つ typeSaveAsのオプションのFileFormatパラメーターを受け取るメソッドがあります。XlFileFormatxlExcel856

前に暗示したように、何らかの理由で列挙値にアクセスできない場合xlExcel8がありますが、MSDN で値を調べて (または単に Google で検索して)、代わりに数値 56 を入力してください。

他のドキュメント (ここと MSDN 内の他の場所の両方) は、通常、自分で推測できるものか、win32com. 残念ながら、すでにまばらなwin32comドキュメントでは、そのドキュメントを読んでいることを前提としていますが、幸いなことに、オブジェクト モデル以外のほとんどすべてを理解するのに十分な例があります。

1b: GUI による Excel の自動化。

Windows で GUI を自動化するのは大変な作業ですが、pywinauto. を使用してスクリプトをswapy作成できる場合があります。pywinauto

Python でそれを行う必要がない場合は、別のスクリプト システムなどAutoItを使用すると、より大きなユーザー ベースとより多くの例を使用して、作業が楽になります。

2: すべて Python で実行します。

xlutils、 python-excelの一部であり、Excel にまったく触れずに、必要なことを実行できる場合があります。

于 2013-01-18T21:14:12.097 に答える