In diesem Artikel erfahren Sie, wie Sie Excel-Daten programmgesteuert in Python in Google Sheets exportieren.
Excel-Dateien werden häufig verwendet, um die Daten zu speichern und verschiedene Arten von Operationen darauf auszuführen, z. B. das Erstellen von Diagrammen und das Anwenden von Formeln. Andererseits ist Google Sheets eine beliebte Online-Anwendung zum Erstellen und Bearbeiten von Tabellenkalkulationen. Google Sheets bietet auch die Echtzeitfreigabe von Tabellenkalkulationen für mehrere Personen. In bestimmten Fällen müssen Sie möglicherweise Excel-XLS- oder -XLSX-Dateien programmgesteuert in Google Tabellen exportieren. Um dies zu erreichen, bietet dieser Artikel eine vollständige Anleitung zum Einrichten eines Google-Projekts und zum Exportieren von Daten aus Excel-Dateien in Google Sheets in Python.
Voraussetzungen – Exportieren Sie Excel-Daten in Google Sheets in Python
Google Cloud-Projekt
Um mit Google Tabellen zu kommunizieren, müssen wir ein Projekt in Google Cloud erstellen und die Google Tabellen-API aktivieren. Außerdem müssen wir Anmeldeinformationen erstellen, die verwendet werden, um die Aktionen zu autorisieren, die wir mit unserem Code ausführen werden. Sie können die Richtlinien zum [Erstellen eines Google Cloud-Projekts und Aktivieren der Google Tabellen-API] lesen4.
Nachdem wir das Google Cloud-Projekt erstellt und die Google Sheets-API aktiviert haben, können wir mit der Installation der folgenden APIs in unserer Python-Anwendung fortfahren.
Python-Bibliotheken zum Exportieren von Excel-Dateien in Google Sheets
Um Daten aus Excel XLS/XLSX-Dateien in Google Sheets zu exportieren, benötigen wir die folgenden APIs.
- Aspose.Cells für Python - To read the data from Excel files.
- Google-Client-Bibliotheken - To create and update spreadsheets on Google Sheets.
Exportieren Sie Daten aus Excel in Google Sheets in Python
Im Folgenden finden Sie eine Schritt-für-Schritt-Anleitung zum Lesen von Daten aus einer Excel-XLSX-Datei und zum Schreiben in Google Sheets in einer Python-Anwendung.
Erstellen Sie eine neue Python-Anwendung.
Installieren Sie Aspose.Cells und Google-Clientbibliotheken im Projekt.
pip install aspose.cells
pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
Platzieren Sie die JSON-Datei (die wir nach dem Erstellen von Anmeldeinformationen in Google Cloud heruntergeladen haben) im Verzeichnis des Projekts.
Schreiben Sie eine Methode namens createspreadsheet, die eine neue Tabelle in Google Tabellen erstellt, den Namen der Standardtabelle festlegt und die ID der Tabelle zurückgibt.
def create_spreadsheet(_service, _title, _sheetName):
# Tabellendetails
spreadsheetBody = {
'properties': {
'title': "{0}".format(_title)
},
'sheets': {
'properties': {
'title' : "{0}".format(_sheetName)
}
}
}
# Tabellenkalkulation erstellen
spreadsheet = _service.spreadsheets().create(body=spreadsheetBody,
fields='spreadsheetId').execute()
print('Spreadsheet ID: {0}'.format(spreadsheet.get('spreadsheetId')))
print('Spreadsheet URL: "https://docs.google.com/spreadsheets/d/{0}'.format(spreadsheet.get('spreadsheetId')))
# Im Webbrowser öffnen
webbrowser.open_new_tab("https://docs.google.com/spreadsheets/d/{0}".format(spreadsheet.get('spreadsheetId')))
return spreadsheet.get('spreadsheetId')
- Schreiben Sie eine andere Methode namens addsheet, um ein neues Blatt in der Google-Tabelle hinzuzufügen.
def add_sheet(_service, _spreadsheetID, _sheetName):
data = {'requests': [
{
'addSheet':{
'properties':{'title': '{0}'.format(_sheetName)}
}
}
]}
# Anfrage ausführen
res = _service.spreadsheets().batchUpdate(spreadsheetId=_spreadsheetID, body=data).execute()
- Initialisieren Sie nun den Google Sheets-Dienst mit den Anmeldeinformationen (JSON-Datei) und definieren Sie die Anwendungsbereiche. Der Parameter scopes wird verwendet, um die Zugriffsberechtigungen für Google Sheets und ihre Eigenschaften anzugeben.
# Wenn Sie diese Bereiche ändern, löschen Sie die Datei token.json.
SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
creds = None
# Die Datei token.json speichert die Zugriffs- und Aktualisierungstoken des Benutzers und ist
# automatisch erstellt, wenn der Autorisierungsablauf zum ersten Mal abgeschlossen ist
# Zeit.
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
# Wenn keine (gültigen) Zugangsdaten verfügbar sind, lassen Sie den Benutzer sich anmelden.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials1.json', SCOPES)
creds = flow.run_local_server(port=0)
# Speichern Sie die Anmeldeinformationen für den nächsten Lauf
with open('token.json', 'w') as token:
token.write(creds.to_json())
service = build('sheets', 'v4', credentials=creds)
- Laden Sie dann die Excel XLS- oder XLSX-Datei mit Aspose.Cells und erhalten Sie den Namen des ersten Arbeitsblatts in der Arbeitsmappe.
# Excel-Arbeitsmappe laden
wb = Workbook(fileName)
# Holen Sie sich die Arbeitsblattsammlung
collection = wb.getWorksheets()
collectionCount = collection.getCount()
# Rufen Sie die Arbeitsmappe und den Namen des ersten Blatts ab
spreadsheetName = wb.getFileName()
firstSheetName = collection.get(0).getName()
- Rufen Sie die createspreadsheet-Methode auf, um eine neue Tabelle in Google Sheets zu erstellen.
# Erstellen Sie eine Tabelle in Google Sheets
spreadsheetID = create_spreadsheet(service, spreadsheetName, firstSheetName)
- Durchlaufen Sie die Arbeitsblätter in der Excel-Datei. Lesen Sie in jeder Iteration Daten aus dem Arbeitsblatt und fügen Sie sie einem Array hinzu.
# Gehen Sie alle Arbeitsblätter durch
for worksheetIndex in range(collectionCount):
# Holen Sie sich das Arbeitsblatt mit seinem Index
worksheet = collection.get(worksheetIndex)
# Arbeitsblattbereich festlegen
if(worksheetIndex==0):
sheetRange= "{0}!A:Y".format(firstSheetName)
else:
add_sheet(service, spreadsheetID, worksheet.getName())
sheetRange= "{0}!A:Y".format(worksheet.getName())
# Holen Sie sich die Anzahl der Zeilen und Spalten
rows = worksheet.getCells().getMaxDataRow()
cols = worksheet.getCells().getMaxDataColumn()
# Liste zum Speichern der Daten des Arbeitsblatts
worksheetDatalist = []
# Schleife durch die Reihen
for i in range(rows):
# Liste zum Speichern jeder Zeile im Arbeitsblatt
rowDataList = []
# Durchlaufen Sie jede Spalte in der ausgewählten Zeile
for j in range(cols):
cellValue = worksheet.getCells().get(i, j).getValue()
if( cellValue is not None):
rowDataList.append(str(cellValue))
else:
rowDataList.append("")
# Zu Arbeitsblattdaten hinzufügen
worksheetDatalist.append(rowDataList)
- Erstellen Sie für jedes Arbeitsblatt in der Excel-Datei eine Anforderung zum Schreiben von Daten in die Google-Tabellen.
# Werte einstellen
body = {
'values': worksheetDatalist
}
# Anfrage ausführen
result = service.spreadsheets().values().update(
spreadsheetId=spreadsheetID, range=sheetRange,
valueInputOption='USER_ENTERED', body=body).execute()
# Anzahl der aktualisierten Zellen drucken
print('{0} cells updated.'.format(result.get('updatedCells')))
Das Folgende ist die vollständige Funktion zum Exportieren von Daten aus einer Excel-Datei in eine Tabelle in Google Sheets.
def export_to_google(fileName):
# Wenn Sie diese Bereiche ändern, löschen Sie die Datei token.json.
SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
creds = None
# Die Datei token.json speichert die Zugriffs- und Aktualisierungstoken des Benutzers und ist
# automatisch erstellt, wenn der Autorisierungsablauf zum ersten Mal abgeschlossen ist
# Zeit.
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
# Wenn keine (gültigen) Zugangsdaten verfügbar sind, lassen Sie den Benutzer sich anmelden.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials1.json', SCOPES)
creds = flow.run_local_server(port=0)
# Speichern Sie die Anmeldeinformationen für die nächste Ausführung
with open('token.json', 'w') as token:
token.write(creds.to_json())
try:
service = build('sheets', 'v4', credentials=creds)
# Excel-Arbeitsmappe laden
wb = Workbook(fileName)
# Holen Sie sich die Arbeitsblattsammlung
collection = wb.getWorksheets()
collectionCount = collection.getCount()
# Rufen Sie die Arbeitsmappe und den Namen des ersten Blatts ab
spreadsheetName = wb.getFileName()
firstSheetName = collection.get(0).getName()
# Erstellen Sie eine Tabelle in Google Sheets
spreadsheetID = create_spreadsheet(service, spreadsheetName, firstSheetName)
# So legen Sie den Arbeitsblattbereich fest
sheetRange = None
# Gehen Sie alle Arbeitsblätter durch
for worksheetIndex in range(collectionCount):
# Holen Sie sich das Arbeitsblatt mit seinem Index
worksheet = collection.get(worksheetIndex)
# Arbeitsblattbereich festlegen
if(worksheetIndex==0):
sheetRange= "{0}!A:Y".format(firstSheetName)
else:
add_sheet(service, spreadsheetID, worksheet.getName())
sheetRange= "{0}!A:Y".format(worksheet.getName())
# Holen Sie sich die Anzahl der Zeilen und Spalten
rows = worksheet.getCells().getMaxDataRow()
cols = worksheet.getCells().getMaxDataColumn()
# Liste zum Speichern der Daten des Arbeitsblatts
worksheetDatalist = []
# Schleife durch die Reihen
for i in range(rows):
# Liste zum Speichern jeder Zeile im Arbeitsblatt
rowDataList = []
# Durchlaufen Sie jede Spalte in der ausgewählten Zeile
for j in range(cols):
cellValue = worksheet.getCells().get(i, j).getValue()
if( cellValue is not None):
rowDataList.append(str(cellValue))
else:
rowDataList.append("")
# Zu Arbeitsblattdaten hinzufügen
worksheetDatalist.append(rowDataList)
# Werte einstellen
body = {
'values': worksheetDatalist
}
# Anfrage ausführen
result = service.spreadsheets().values().update(
spreadsheetId=spreadsheetID, range=sheetRange,
valueInputOption='USER_ENTERED', body=body).execute()
# Anzahl der aktualisierten Zellen drucken
print('{0} cells updated.'.format(result.get('updatedCells')))
except HttpError as err:
print(err)
print("Workbook has been exported to Google Sheets.")
Vollständiger Quellcode
Das Folgende ist der vollständige Quellcode zum Exportieren einer Excel-XLSX-Datei in Google Sheets in Python.
from __future__ import print_function
import jpype
import webbrowser
import os.path
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
import asposecells
jpype.startJVM()
from asposecells.api import Workbook, License
def export_to_google(fileName):
# Wenn Sie diese Bereiche ändern, löschen Sie die Datei token.json.
SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
creds = None
# Die Datei token.json speichert die Zugriffs- und Aktualisierungstoken des Benutzers und ist
# automatisch erstellt, wenn der Autorisierungsablauf zum ersten Mal abgeschlossen ist
# Zeit.
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
# Wenn keine (gültigen) Zugangsdaten verfügbar sind, lassen Sie den Benutzer sich anmelden.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials1.json', SCOPES)
creds = flow.run_local_server(port=0)
# Speichern Sie die Anmeldeinformationen für den nächsten Lauf
with open('token.json', 'w') as token:
token.write(creds.to_json())
try:
service = build('sheets', 'v4', credentials=creds)
# Excel-Arbeitsmappe laden
wb = Workbook(fileName)
# Holen Sie sich die Arbeitsblattsammlung
collection = wb.getWorksheets()
collectionCount = collection.getCount()
# Rufen Sie die Arbeitsmappe und den Namen des ersten Blatts ab
spreadsheetName = wb.getFileName()
firstSheetName = collection.get(0).getName()
# Erstellen Sie eine Tabelle in Google Sheets
spreadsheetID = create_spreadsheet(service, spreadsheetName, firstSheetName)
# So legen Sie den Arbeitsblattbereich fest
sheetRange = None
# Gehen Sie alle Arbeitsblätter durch
for worksheetIndex in range(collectionCount):
# Holen Sie sich das Arbeitsblatt mit seinem Index
worksheet = collection.get(worksheetIndex)
# Arbeitsblattbereich festlegen
if(worksheetIndex==0):
sheetRange= "{0}!A:Y".format(firstSheetName)
else:
add_sheet(service, spreadsheetID, worksheet.getName())
sheetRange= "{0}!A:Y".format(worksheet.getName())
# Holen Sie sich die Anzahl der Zeilen und Spalten
rows = worksheet.getCells().getMaxDataRow()
cols = worksheet.getCells().getMaxDataColumn()
# Liste zum Speichern der Daten des Arbeitsblatts
worksheetDatalist = []
# Schleife durch die Reihen
for i in range(rows):
# Liste zum Speichern jeder Zeile im Arbeitsblatt
rowDataList = []
# Durchlaufen Sie jede Spalte in der ausgewählten Zeile
for j in range(cols):
cellValue = worksheet.getCells().get(i, j).getValue()
if( cellValue is not None):
rowDataList.append(str(cellValue))
else:
rowDataList.append("")
# Zu Arbeitsblattdaten hinzufügen
worksheetDatalist.append(rowDataList)
# Werte einstellen
body = {
'values': worksheetDatalist
}
# Anfrage ausführen
result = service.spreadsheets().values().update(
spreadsheetId=spreadsheetID, range=sheetRange,
valueInputOption='USER_ENTERED', body=body).execute()
# Anzahl der aktualisierten Zellen drucken
print('{0} cells updated.'.format(result.get('updatedCells')))
except HttpError as err:
print(err)
print("Workbook has been exported to Google Sheets.")
def create_spreadsheet(_service, _title, _sheetName):
# Tabellendetails
spreadsheetBody = {
'properties': {
'title': "{0}".format(_title)
},
'sheets': {
'properties': {
'title' : "{0}".format(_sheetName)
}
}
}
# Tabellenkalkulation erstellen
spreadsheet = _service.spreadsheets().create(body=spreadsheetBody,
fields='spreadsheetId').execute()
# Im Webbrowser öffnen
webbrowser.open_new_tab("https://docs.google.com/spreadsheets/d/{0}".format(spreadsheet.get('spreadsheetId')))
return spreadsheet.get('spreadsheetId')
def add_sheet(_service, _spreadsheetID, _sheetName):
data = {'requests': [
{
'addSheet':{
'properties':{'title': '{0}'.format(_sheetName)}
}
}
]}
# Anfrage ausführen
res = _service.spreadsheets().batchUpdate(spreadsheetId=_spreadsheetID, body=data).execute()
# Erstellen Sie ein Aspose.Cells-Icense-Objekt
license = License()
# Legen Sie die Lizenz von Aspose.Cells fest, um die Evaluierungseinschränkungen zu umgehen
license.setLicense("D:\\Licenses\\Conholdate.Total.Product.Family.lic")
export_to_google("Book1.xlsx")
Holen Sie sich eine kostenlose Aspose.Cells-Lizenz
Sie können eine kostenlose temporäre Lizenz erhalten und Aspose.Cells für Python ohne Evaluierungseinschränkungen verwenden.
Fazit
In diesem Artikel haben Sie gelernt, wie Sie Excel-Daten in Google Sheets in Python exportieren. Wir haben behandelt, wie Sie ein Projekt in Google Cloud erstellen, die Google Sheets-API aktivieren, Excel-Dateien lesen und Daten aus Excel-Dateien in Google Sheets exportieren. Weitere Informationen zu Aspose.Cells für Python finden Sie in der Dokumentation. Sie können Ihre Fragen auch über unser Forum stellen.