3

この質問は以前に尋ねられたと思いますが、明確ではありません。元の質問では、ユーザーがMac用ではなくWindowsの実行可能拡張機能であるexcel.exeを提供しました。

  • MAC上のPythonで新しいExcelインスタンスを開く必要があります。

どのモジュールをインポートする必要がありますか?

私はPython言語の学習を完了した初心者ですが、ドキュメントを理解するのに苦労しています。

4

2 に答える 2

4

Excelを起動するだけの場合、LaunchServicesを使用して起動するのが最善の方法です。

持っている場合PyObjC(Appleが10.6以降にプレインストールしているPythonを使用している場合はこれを行います。それ以外の場合は、インストールする必要があります):

import Foundation
ws = Foundation.NSWorkspace.sharedWorkspace()
ws.launchApplication_('Microsoft Excel')

そうでない場合は、いつでもopenツールを使用できます。

import subprocess
subprocess.check_call(['open', '-a', 'Microsoft Excel'])

どちらの方法でも、ユーザーがFinderでアプリアイコンをダブルクリックした場合と同じように、Excelを効果的に起動できます。

特定のドキュメントを開くなどの単純なことをExcelに実行させたい場合、それはそれほど難しくありません。NSWorkspaceまたはドキュメントを見openて、やりたいことを行う方法を確認してください。

実際にExcelを制御したい場合(たとえば、ドキュメントを開いて変更を加えて保存したい場合)は、AppleScriptインターフェイスを使用することをお勧めします。

これを行うためのAppleの推奨される方法は、を介するScriptingBridgeか、または2言語アプローチを使用することです(AppleScriptを記述し、を介して実行します。NSAppleScriptこれは、Pythonではを介して行いますPyObjC)。ただし、おそらく使用します(ここappscriptからコードを取得します)。それは元の作成者によって放棄され、まばらにしか維持されておらず、おそらく最終的には将来のOS Xバージョンでの動作を停止するという事実にもかかわらず、公式のソリューションよりもはるかに優れています。

これがサンプルです(私はここにExcelを持っていないので、テストされていません):

import appscript
excel = appscript.app('Microsoft Excel')
excel.workbooks[1].column[2].row[2].formula.set('=A2+1')
于 2013-03-27T06:46:31.600 に答える
2

コメントから、Excelファイルをデータで「更新」する必要があるかどうかは完全には明らかではなく、Excelが必要であると想定するか、新しいデータを含めるために一部のExcelファイルを変更する必要があると想定します。

通常、Excelを起動せずにExcelファイルを「更新」する方がはるかに簡単で、確かに高速です(実行速度が異なります)。ただし、更新は正しい言葉ではありません。ファイルを読み込んで、新しく書き出す必要があります。もちろん、元のファイルを上書きできるので、更新のように見えます。

使用するファイルがファイル(Excel 2003)場合、 「更新」にはトリオを使用できxlrdます。xlwtxlutils.xlsIIRC xlwtは.xlsx書き込みをサポートしていません(ただし、xlrdこれらのファイルを読み取ることはできます)。

.xlsx私が使用するファイルの場合openpyxl

どちらも、データ、数式、基本的な書式設定などを書くのに十分です。

上記のパッケージのいずれかを使用して読み取り/書き込みを行うと失われる情報を含む「テンプレート」として使用する既存のExcelファイルがある場合は Excelでファイルを更新する必要があります。Visual Basicマクロと、クライアントによって指定された非常に特殊なフォーマットを含める簡単な方法がなかったため、そうしなければなりませんでした。また、スプレッドシートを視覚的に設定してから、プログラムでセルに入力する方が簡単な場合もあります。しかし、これはすべてWindowsで行われました。

MacでExcelを駆動する必要がある場合は、既存のファイルをテンプレートとして使用する必要があるため、Applescriptを確認することをお勧めします。または、オプションの場合は、OpenOffice /LibreOfficePyUnoインターフェイスを確認してください。

于 2013-03-27T06:27:11.353 に答える