Das Einfügen einer CSV-Datei mit VBA von Excel ist problematisch, da Sie viel Code schreiben müssen. Ich habe versucht herauszufinden, ob es eine einfache Möglichkeit gibt, in Python zu schreiben.
Fügen Sie den CSV-Inhalt in das angegebene Excel-Blatt ein.
Python verfügt über mehrere Module für die Arbeit mit Excel. Das vielleicht berühmteste ist Openpyxl. Obwohl Openpyxl schnell ist, gibt es viele Probleme (Formatkollaps usw.) Dieses Mal möchte ich xlwings verwenden.
Wenn xlwings nicht installiert ist, installieren Sie es mit dem folgenden Befehl.
$ pip install xlwings
Da es scheint, dass es in Zukunft häufig verwendet wird, habe ich es zu einer Funktion gemacht. Nach dem Lesen der CSV-Datei mit Pandas wird sie in Zelle A1 des angegebenen Blattes eingefügt. Bei VBA ist es erforderlich, CSV Zeile für Zeile zu lesen und auszugeben. Mit Pandas ist es sehr einfach zu schreiben.
import pandas as pd
import xlwings as xw
def csv_to_sheet(wb_name, ws_name, csv_name, save_flg=True, quit_flg=True):
"""\
Bedienungsanleitung:
Eine Funktion, die den Inhalt von CSV in ein bestimmtes Blatt kopiert
Argumentbeschreibung:
wb_Name: Name der Arbeitsmappe
ws_Name: Blattname
csv_Name: CSV-Dateiname
save_flg: Das Überschreiben wird standardmäßig durchgeführt.
quit_flg: Standard ist geschlossen
"""
df = pd.read_csv(csv_name,encoding='cp932', index_col=0) #Lesen Sie die CSV-Datei mit DataFrame
wb = xw.Book(wb_name) #Erstellen eines Arbeitsmappenobjekts
wss = wb.sheets
ws = wss[ws_name] #Erstellen eines Arbeitsblattobjekts
ws.range('A1').value = df #Fügen Sie DataFrame ein
#save_Überschreiben, wenn flg True ist
if save_flg:
wb.save(path=None)
#quit_Schließen Sie Excel, wenn flg True ist
if quit_flg:
app = xw.apps.active
app.quit() #Beenden Sie Excel
Bitte ändern Sie die Excel-Datei, den Blattnamen und die CSV-Datei nach Ihren Wünschen. Wenn Sie nicht überschreiben möchten, setzen Sie save_flg = False im Argument. Wenn Sie die Bearbeitung fortsetzen möchten, ohne die Datei zu schließen, übergeben Sie quit_flg = False.
wb_name = 'Excel-Dateiname.xlsx'
ws_name = 'Blattname'
csv_name = 'CSV-Datei'
csv_to_sheet(wb_name, ws_name, csv_name)