2016-12-16 1 views
2

Ich verwende openpyxl, um in eine Arbeitsmappe zu schreiben. Diese Arbeitsmappe muss jedoch geschlossen werden, um sie bearbeiten zu können. Gibt es eine Möglichkeit, in eine offene Excel-Tabelle zu schreiben? Ich möchte eine Schaltfläche haben, die einen Python-Code mithilfe der Befehlszeile ausführt und die Zellen ausfüllt.Wie schreibt man mit Python in eine offene Excel-Datei?

Der aktuelle Prozess, den ich erstellt habe, verwendet VBA, um die Datei zu schließen, und dann schreibt Python es und öffnet es erneut. Aber das ist ineffizient. Deshalb brauche ich eine Möglichkeit, um Dateien zu öffnen.

+0

Möchten Sie insbesondere openpyxl verwenden? Ich bevorzuge im Allgemeinen xlrd und xlwt für ihre Flexibilität mit dem gleichen. – SashaZd

+0

Ich habe keinen Grund, openpyx spezifisch zu verwenden. Bis jetzt war ich in der Lage, VBA und Python zu synchronisieren und openpyx macht einen anständigen Job. Warum schlagen Sie vor, xlwt oder xlrd zu verwenden? –

+0

@SashaZd Dies ist ein Thema, aber Sie erwähnten xlwt als eine Option. Openpyxl hat mir einige Probleme mit der Formatierung gegeben. Ist xlwt diesbezüglich besser? Wird die Excel-Formatierung beibehalten? –

Antwort

2

Im Allgemeinen sollten zwei verschiedene Prozesse nicht in dieselbe Datei schreiben, da dies Synchronisationsprobleme verursacht.

Eine bessere Möglichkeit wäre, die vorhandene Datei im übergeordneten Prozess (auch VBA-Code genannt) zu schließen und den Speicherort der Arbeitsmappe an Python-Skript zu übergeben.

Das Python-Skript wird es öffnen und den Inhalt in die Zelle schreiben und beenden.

+0

Also führt der VBA-Code den Python-Code aus und schließt die Excel-Datei. Der Python-Code arbeitet und schreibt ihn in dieselbe Excel-Datei, die geschlossen wurde und öffnet sie dann. Aber die Art von Tool, die ich versuche zu bauen, wird eine Menge Interaktion beinhalten und jedes Mal, wenn das passiert, möchte ich nicht die Excel-Arbeitsmappe geschlossen und bearbeitet und dann wieder geöffnet werden. Genauso wie VBA-Code in eine offene Excel-Datei schreiben kann, versuche ich dasselbe mit Python zu erreichen. –

+0

Ich denke nicht, Excel Arbeitsmappe hat jede Art von Synchronisations-Primitiven, um zwei gleichzeitige Schreibvorgänge zu ermöglichen. Python weiß nicht, dass der VBA-Code die Datei bereits geöffnet hat, und das gilt auch für VBA-Code. Ich stimme Ihnen zu, dass es viele Interaktionen geben kann, aber das resultierende Endprodukt kann zuverlässiger sein. Ich glaube auch nicht, dass das mehrfache Öffnen und Schließen einer Datei zeitaufwendig ist. –

2

Nein, dies ist nicht möglich, da Excel-Dateien keinen gleichzeitigen Zugriff unterstützen.

+0

Was hat COM mit openpyxl zu tun? –

Verwandte Themen