In diesem Artikel erfahren Sie, wie Sie Excel-Daten programmgesteuert in Python in Google Sheets exportieren.

Exportieren Sie Excel-Dateien in Google Sheets in Python

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.

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.

  1. Erstellen Sie eine neue Python-Anwendung.

  2. 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
  1. Platzieren Sie die JSON-Datei (die wir nach dem Erstellen von Anmeldeinformationen in Google Cloud heruntergeladen haben) im Verzeichnis des Projekts.

  2. 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')
  1. 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()
  1. 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)
  1. 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()
  1. 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)
  1. 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)
  1. 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.

Siehe auch