Also im Grunde möchte ich ein Arbeitsblatt mit neuen Daten aktualisieren und bestehende Zellen in Excel überschreiben. Beide Dateien haben die gleichen Spaltennamen (ich möchte keine neue Arbeitsmappe erstellen oder eine neue Spalte hinzufügen).Wie kann ich Werte aus einer Liste oder einem Datenrahmen in jede Zelle in einer vorhandenen Excel-Datei eingeben?
Hier habe ich die Daten am retreiving, was ich will:
import pandas as pd
df1 = pd.read_csv
print(df1)
Ouput (I Kopieren und Einfügen nur die ersten fünf Reihen gibt es etwa 500 Zeilen gesamt):
Index Type Stage CDID Period Index Value
0 812008000 6 2 JTV9 201706 121.570
1 812008000 6 2 JTV9 201707 121.913
2 812008000 6 2 JTV9 201708 121.686
3 812008000 6 2 JTV9 201709 119.809
4 812008000 6 2 JTV9 201710 119.841
5 812128000 6 1 K2VA 201706 122.030
Die bestehenden Excel-Datei hat die gleichen Spalten (und Zeilensumme) wie df1, aber ich möchte nur die 'Index' Spalte mit den neuen Werten neu gefüllt haben. Sagen wir einfach, es sieht wie folgt aus (dh so dass ich die vorherigen Werte wollen Index in der entsprechenden Spalte zu gehen):
Index Type Stage CDID Period Index Value
0 512901100 6 2 JTV9 201706 121.570
1 412602034 6 2 JTV9 201707 121.913
2 612307802 6 2 JTV9 201708 121.686
3 112808360 6 2 JTV9 201709 119.809
4 912233066 6 2 JTV9 201710 119.841
5 312128003 6 1 K2VA 201706 122.030
Hier habe ich die Excel-Datei am Abrufen und versuchen, sie zu überschreiben:
from win32com.client import Dispatch
import os
xl = Dispatch("Excel.Application")
xl.Visible = True
wbs_path = ('folder path')
for wbname in os.listdir(wbs_path):
if not wbname.endswith("file name.xlsx"):
continue
wb = xl.Workbooks.Open(wbs_path + '\\' + wbname)
sh = wb.Worksheets("sheet name")
sh.Range("A1:A456").Value = df1[["Index"]]
wb.Save()
wb.Close()
xl.Quit()
Aber das tut nichts. Wenn ich in Strings geben, wie zum Beispiel:
h.Range("A1:A456").Value = 'o', 'x', 'c'
Dies wiederholt sich o in Zellen durch A1 bis zur A456 (es aktualisiert die Tabelle), aber ignoriert x und c. Ich habe versucht, df1 in eine Liste und ein numpy Array zu konvertieren, aber das funktioniert nicht.
Kennt jemand eine Lösung oder eine alternative Problemumgehung?
Ah richtig, so wissen Sie, ob es möglich ist die aktualisierte Tabelle zu speichern, die ältere Datei überschrieben werden? Wenn ich die Datei mit dem gleichen Namen wie die ältere Version benenne, wird sie überschrieben? – DanONS
Werfen Sie einen Blick auf diese Frage: https://stackoverflow.com/questions/42370977/how-to-save-a-new-sheet-in-existing-excel-file-using-pandas Nur das Blatt wird überschrieben werden - die Datei bleibt gleich. Aber ich würde immer noch eine Kopie des Blattes machen, wenn es ein wichtiges ist;) – EyJay
Cool, das war interessant, ich habe es ausprobiert. Während es die Blätter überschreibt, wollte ich, dass Blatt 2 und Blatt 3 intakt bleiben. Jedenfalls könnte es ein Schritt in die richtige Richtung sein, also werde ich sehen, ob es tun kann, was ich brauche – DanONS