In diesem Artikel wird beschrieben, wie Sie MS Excel XLS oder XLSX programmgesteuert in C# .NET in Google Sheets konvertieren.

Konvertieren Sie Excel XLS oder XLSX in Google Sheets in C# .NET

Tabellenkalkulationen werden häufig zum Speichern kleiner oder umfangreicher Daten in Form von Zeilen und Spalten verwendet. Es stehen verschiedene Anwendungen zum Erstellen und Bearbeiten von Tabellenkalkulationen zur Verfügung, von denen MS Excel eine beliebte ist. Daneben bietet Google Google Sheets an, das zum Erstellen und Aktualisieren von Tabellenkalkulationen online verwendet wird. Darüber hinaus können Sie mit Google Sheets die Tabellenkalkulationen in Echtzeit mit mehreren Personen teilen. In bestimmten Fällen müssen Sie möglicherweise Daten aus Excel-XLS- oder -XLSX-Dateien programmgesteuert in eine Tabelle in Google Tabellen exportieren. Sehen wir uns also an, wie Sie Daten aus einer Excel-Datei lesen und in die Tabelle von Google Sheets in C# .NET schreiben können.

Voraussetzungen – Konvertieren Sie eine Excel-Datei in Google Sheets in C#

Google Cloud-Projekt

Um mit Google Tabellen zu kommunizieren, müssen wir ein Projekt in Google Cloud erstellen und die Google Tabellen-API aktivieren. Im Folgenden sind die Schritte zum Erstellen eines Projekts und zum Aktivieren der API aufgeführt.

  1. Gehen Sie zur Google Cloud-Konsole.
  2. Neues Projekt erstellen auf der Konsole.
    • Wählen Sie das soeben erstellte Projekt aus.
  3. Wählen Sie im Navigationsmenü APIs und Dienste und dann Dashboard aus.
    • Klicken Sie auf die Schaltfläche APIs und Dienste aktivieren (siehe Details).
    • Suchen und aktivieren Sie die Google Sheets-API.
  4. OAuth-Zustimmungsbildschirm konfigurieren und Umfang der Anwendung festlegen.
    • Fügen Sie Testbenutzer hinzu, die verwendet werden, wenn die Anwendung nicht veröffentlicht wird.
  5. Gehen Sie auf der Seite APIs and Services zu Credentials.
    • Klicken Sie auf die Schaltfläche Anmeldedaten erstellen und wählen Sie OAuth-Client-ID aus.
    • Wählen Sie als Anwendungstyp Desktop-App aus (da wir in diesem Artikel eine Konsolenanwendung erstellen).
    • Laden Sie die JSON-Datei herunter.

C# .NET-APIs für die Konvertierung von Excel in Google Sheets

Um Daten aus Excel XLS/XLSX-Dateien in Google Sheets zu exportieren, benötigen wir die folgenden APIs.

Zum Zeitpunkt des Schreibens dieses Artikels haben wir Aspose.Cells für .NET 22.2 und Google.Apis.Sheets.v4 1.56.0.2608 verwendet.

Exportieren Sie Daten aus Excel XLSX in Google Sheets in C#

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 C#-Konsolenanwendung.

  1. Erstellen Sie ein neues Konsolenanwendungsprojekt in Visual Studio 2013 oder höher.
Exportieren Sie Daten aus Excel XLSX in Google Sheets in C#
  1. Installieren Sie Aspose.Cells für .NET- und Google Sheets-APIs im Projekt.
PM> Install-Package Aspose.Cells
PM> Install-Package Google.Apis.Sheets.v4
  1. Kopieren Sie die JSON-Datei (die wir nach dem Erstellen der Anmeldeinformationen in Google Cloud heruntergeladen haben) und fügen Sie sie in das Projektverzeichnis ein.

  2. Initialisieren Sie den Google Sheets-Dienst mit den Anmeldeinformationen (JSON-Datei) und definieren Sie die Anwendungsbereiche. Die Bereiche definieren die Zugriffsberechtigungen auf die Blätter und deren Eigenschaften. Die folgende Funktion initialisiert den Google Sheets-Dienst und gibt das SheetsService-Objekt zurück.

using Google.Apis.Auth.OAuth2;
using Google.Apis.Sheets.v4;
using Google.Apis.Services;
using Google.Apis.Util.Store;

public static SheetsService ConnectToGoogle()
{
    // Wenn Sie diese Bereiche ändern, löschen Sie Ihre zuvor gespeicherten Anmeldeinformationen
    // unter ~/.credentials/sheets.googleapis.com-dotnet-quickstart.json
    string[] Scopes = { SheetsService.Scope.Spreadsheets };
    string ApplicationName = "Excel to Google Sheet";

    UserCredential credential;

    using (var stream =
        new FileStream("credentials.json", FileMode.Open, FileAccess.Read))
    {
        // Die Datei token.json speichert die Zugriffs- und Aktualisierungstoken des Benutzers und wird erstellt
        // automatisch, wenn der Autorisierungsablauf zum ersten Mal abgeschlossen wird.
        string credPath = "token.json";
        credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
            GoogleClientSecrets.FromStream(stream).Secrets,
            Scopes,
            "user",
            CancellationToken.None,
            new FileDataStore(credPath, true)).Result;
        Console.WriteLine("Credential file saved to: " + credPath);
    }

    // Erstellen Sie den Google Sheets-API-Dienst
    var service = new SheetsService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = ApplicationName,
    });

    return service;
}
  1. CreateCreateSpreadsheet-Funktion, die eine neue Tabelle in Google Sheets erstellt, den Namen der Standardtabelle festlegt und ein Spreadsheet-Objekt zurückgibt.
using Google.Apis.Sheets.v4;
using Google.Apis.Sheets.v4.Data;
using Google.Apis.Services;

public static Spreadsheet CreateSpreadsheet(SheetsService _sheetsService, string _spreadsheetName, string _defaultSheetName)
{
    // Erstellen Sie eine neue Tabelle
    var newSpreadSheet = new Google.Apis.Sheets.v4.Data.Spreadsheet();
    newSpreadSheet.Properties = new SpreadsheetProperties();
    newSpreadSheet.Properties.Title = _spreadsheetName;

    // Erstellen Sie ein neues Blatt
    var sheet = new Sheet();
    sheet.Properties = new SheetProperties();
    sheet.Properties.Title = _defaultSheetName;
    newSpreadSheet.Sheets = new List<Sheet>() { sheet };

    // Anfrage ausführen
    var newSheet = _sheetsService.Spreadsheets.Create(newSpreadSheet).Execute();

    return newSheet;
}
  1. Erstellen Sie eine AddSheet-Funktion, um ein neues Blatt in der Google-Tabelle hinzuzufügen.
public static void AddSheet(SheetsService _sheetsService, string _spreadSheetID, string _sheetName)
{
    // Neues Blatt hinzufügen
    var addSheetRequest = new AddSheetRequest();
    addSheetRequest.Properties = new SheetProperties();
    addSheetRequest.Properties.Title = _sheetName;
    BatchUpdateSpreadsheetRequest batchUpdateSpreadsheetRequest = new BatchUpdateSpreadsheetRequest();
    batchUpdateSpreadsheetRequest.Requests = new List<Request>();
    batchUpdateSpreadsheetRequest.Requests.Add(new Request
    {
        AddSheet = addSheetRequest
    });

    // Anfrage erstellen
    var batchUpdateRequest =
        _sheetsService.Spreadsheets.BatchUpdate(batchUpdateSpreadsheetRequest, _spreadSheetID);

    // Anfrage ausführen
    var response = batchUpdateRequest.Execute();

}
  1. Erstellen Sie nun eine neue Funktion ExportDataFromExcelToGoogleSheet, die Daten aus einer Excel-Datei liest und in Google Sheets exportiert. Laden Sie in dieser Funktion zunächst die Excel-XLS/XLSX-Datei mit Aspose.Cells für .NET und rufen Sie den Namen des ersten Arbeitsblatts in der Arbeitsmappe ab.
// Laden Sie eine Excel-Arbeitsmappe
Workbook wb = new Workbook(_excelFileName);

// Rufen Sie den Namen des ersten Arbeitsblatts ab
string defaultWorksheetName = wb.Worksheets[0].Name;
  1. Rufen Sie dann die CreateSpreadsheet-Funktion auf, um eine neue Tabelle in Google Sheets zu erstellen.
// Erstellen Sie eine neue Google-Tabelle mit dem Standardarbeitsblatt
Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);
  1. Durchlaufen Sie die Arbeitsblätter in der Excel-Datei. Lesen Sie in jeder Iteration Daten aus dem Arbeitsblatt und fügen Sie sie einer Liste hinzu.
// Arbeitsblätter durchlaufen
foreach (var sheet in wb.Worksheets)
{
    if (sheet.Index == 0)
    {
        // Das erste Blatt wird standardmäßig erstellt, also nur den Bereich festlegen
        range = $"{defaultWorksheetName}!A:Y";
    }
    else
    {
        // Fügen Sie ein neues Blatt hinzu
        AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
        range = $"{sheet.Name}!A:Y";
    }

    // Holen Sie sich die Anzahl der Zeilen und Spalten
    int rows = sheet.Cells.MaxDataRow;
    int cols = sheet.Cells.MaxDataColumn;

    IList<IList<Object>> list = new List<IList<Object>>() { };

    // Schleife durch die Reihen
    for (int i = 0; i < rows; i++)
    {
        List<object> lists = new List<object>();

        // Durchlaufen Sie jede Spalte in der ausgewählten Zeile
        for (int j = 0; j < cols; j++)
        {
            lists.Add(sheet.Cells[i, j].Value);
        }
        list.Add(lists);
    }
}
  1. Erstellen Sie für jedes Arbeitsblatt in der Excel-Datei eine Anfrage, um Daten in die Tabelle in Google Sheets zu schreiben.
// Bereich definieren
ValueRange VRange = new ValueRange();
VRange.Range = range;

// Werte einstellen
VRange.Values = list;

// Anfrage erstellen
SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;

// Anfrage ausführen
UpdateValuesResponse response = upd.Execute();

// Erhalten Antwort
string responseString = JsonConvert.SerializeObject(response);

Die vollständige Funktion zum Exportieren von Daten aus einer Excel-Datei in eine Tabelle in Google Sheets ist unten angegeben.

using Google.Apis.Sheets.v4;
using Google.Apis.Sheets.v4.Data;
using Google.Apis.Services;
using Aspose.Cells;

public static void ExportDataFromExcelToGoogleSheet(SheetsService _sheetService, string _excelFileName)
{
    // Laden Sie eine Excel-Arbeitsmappe
    Workbook wb = new Workbook(_excelFileName);

    // Rufen Sie den Namen des ersten Arbeitsblatts ab
    string defaultWorksheetName = wb.Worksheets[0].Name;

    // Erstellen Sie eine neue Google-Tabelle mit dem Standardarbeitsblatt
    Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);

    Console.WriteLine("URL: " + spreadhsheet.SpreadsheetUrl);
    Console.WriteLine("ID: " + spreadhsheet.SpreadsheetId);

    // Bereich definieren
    String range;

    // Arbeitsblätter durchlaufen
    foreach (var sheet in wb.Worksheets)
    {
        if (sheet.Index == 0)
        {
            // Das erste Blatt wird standardmäßig erstellt, also nur den Bereich festlegen
            range = $"{defaultWorksheetName}!A:Y";
        }
        else
        {
            // Fügen Sie ein neues Blatt hinzu
            AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
            range = $"{sheet.Name}!A:Y";
        }

        // Holen Sie sich die Anzahl der Zeilen und Spalten
        int rows = sheet.Cells.MaxDataRow;
        int cols = sheet.Cells.MaxDataColumn;

        IList<IList<Object>> list = new List<IList<Object>>() { };

        // Schleife durch die Reihen
        for (int i = 0; i < rows; i++)
        {
            List<object> lists = new List<object>();

            // Durchlaufen Sie jede Spalte in der ausgewählten Zeile
            for (int j = 0; j < cols; j++)
            {
                lists.Add(sheet.Cells[i, j].Value);
            }
            list.Add(lists);
        }

        // Bereich definieren
        ValueRange VRange = new ValueRange();
        VRange.Range = range;

        // Werte einstellen
        VRange.Values = list;

        // Anfrage erstellen
        SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
        upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;

        // Anfrage ausführen
        UpdateValuesResponse response = upd.Execute();

        // Erhalten Antwort
        string responseString = JsonConvert.SerializeObject(response);
    }
}

Vollständiger Quellcode

Im Folgenden finden Sie den vollständigen Quellcode zum Konvertieren einer Excel-XLSX-Datei in Google Sheets in C#.

using System;
using System.Collections.Generic;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Sheets.v4;
using Google.Apis.Sheets.v4.Data;
using Google.Apis.Services;
using Google.Apis.Util.Store;
using System.IO;
using System.Threading;
using Newtonsoft.Json;
using Aspose.Cells;

namespace ExcelToGoogle
{
    class Program
    {
        static void Main(string[] args)
        {
            // Verbinden Sie sich mit Google
            SheetsService sheetService = ConnectToGoogle();

            // Exportieren Sie Daten aus einer Excel-Datei in Google Sheets
            ExportDataFromExcelToGoogleSheet(sheetService, "workbook.xlsx");

            Console.ReadKey();
        }
        public static SheetsService ConnectToGoogle()
        {
            // Wenn Sie diese Bereiche ändern, löschen Sie Ihre zuvor gespeicherten Anmeldeinformationen
            // unter ~/.credentials/sheets.googleapis.com-dotnet-quickstart.json
            string[] Scopes = { SheetsService.Scope.Spreadsheets };
            string ApplicationName = "Excel to Google Sheet";

            UserCredential credential;

            using (var stream =
                new FileStream("credentials1.json", FileMode.Open, FileAccess.Read))
            {
                // Die Datei token.json speichert die Zugriffs- und Aktualisierungstoken des Benutzers und wird erstellt
                // automatisch, wenn der Autorisierungsablauf zum ersten Mal abgeschlossen wird.
                string credPath = "token.json";
                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.FromStream(stream).Secrets,
                    Scopes,
                    "user",
                    CancellationToken.None,
                    new FileDataStore(credPath, true)).Result;
                Console.WriteLine("Credential file saved to: " + credPath);
            }

            // Erstellen Sie den Google Sheets-API-Dienst
            var service = new SheetsService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = ApplicationName,
            });

            return service;
        }
        public static void ExportDataFromExcelToGoogleSheet(SheetsService _sheetService, string _excelFileName)
        {
            // Laden Sie eine Excel-Arbeitsmappe
            Workbook wb = new Workbook(_excelFileName);

            // Rufen Sie den Namen des ersten Arbeitsblatts ab
            string defaultWorksheetName = wb.Worksheets[0].Name;

            // Erstellen Sie eine neue Google-Tabelle mit dem Standardarbeitsblatt
            Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);

            Console.WriteLine("Spreadsheet URL: " + spreadhsheet.SpreadsheetUrl);
            Console.WriteLine("ID: " + spreadhsheet.SpreadsheetId);

            // Bereich definieren
            String range;

            // Arbeitsblätter durchlaufen
            foreach (var sheet in wb.Worksheets)
            {
                if (sheet.Index == 0)
                {
                    // Das erste Blatt wird standardmäßig erstellt, also nur den Bereich festlegen
                    range = $"{defaultWorksheetName}!A:Y";
                }
                else
                {
                    // Fügen Sie ein neues Blatt hinzu
                    AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
                    range = $"{sheet.Name}!A:Y";
                }

                // Holen Sie sich die Anzahl der Zeilen und Spalten
                int rows = sheet.Cells.MaxDataRow;
                int cols = sheet.Cells.MaxDataColumn;

                IList<IList<Object>> list = new List<IList<Object>>() { };

                // Schleife durch die Reihen
                for (int i = 0; i < rows; i++)
                {
                    List<object> lists = new List<object>();

                    // Durchlaufen Sie jede Spalte in der ausgewählten Zeile
                    for (int j = 0; j < cols; j++)
                    {
                        lists.Add(sheet.Cells[i, j].Value);
                    }
                    list.Add(lists);
                }

                // Bereich definieren
                ValueRange VRange = new ValueRange();
                VRange.Range = range;

                // Werte einstellen
                VRange.Values = list;

                // Anfrage erstellen
                SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
                upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;

                // Anfrage ausführen
                UpdateValuesResponse response = upd.Execute();

                // Erhalten Antwort
                string responseString = JsonConvert.SerializeObject(response);
            }

        }
        public static Spreadsheet CreateSpreadsheet(SheetsService _sheetsService, string _spreadsheetName, string _defaultSheetName)
        {
            // Erstellen Sie eine neue Tabelle
            var newSpreadSheet = new Google.Apis.Sheets.v4.Data.Spreadsheet();
            newSpreadSheet.Properties = new SpreadsheetProperties();
            newSpreadSheet.Properties.Title = _spreadsheetName;

            // Erstellen Sie ein neues Blatt
            var sheet = new Sheet();
            sheet.Properties = new SheetProperties();
            sheet.Properties.Title = _defaultSheetName;
            newSpreadSheet.Sheets = new List<Sheet>() { sheet };

            // Anfrage ausführen
            var newSheet = _sheetsService.Spreadsheets.Create(newSpreadSheet).Execute();

            return newSheet;

        }
        public static void AddSheet(SheetsService _sheetsService, string _spreadSheetID, string _sheetName)
        {
            // Neues Blatt hinzufügen
            var addSheetRequest = new AddSheetRequest();
            addSheetRequest.Properties = new SheetProperties();
            addSheetRequest.Properties.Title = _sheetName;
            BatchUpdateSpreadsheetRequest batchUpdateSpreadsheetRequest = new BatchUpdateSpreadsheetRequest();
            batchUpdateSpreadsheetRequest.Requests = new List<Request>();
            batchUpdateSpreadsheetRequest.Requests.Add(new Request
            {
                AddSheet = addSheetRequest
            });

            // Anfrage erstellen
            var batchUpdateRequest =
                _sheetsService.Spreadsheets.BatchUpdate(batchUpdateSpreadsheetRequest, _spreadSheetID);

            // Anfrage ausführen
            var response = batchUpdateRequest.Execute();
        }
    }
}

Demo – Konvertieren Sie Excel in Google Sheets in C#

Holen Sie sich eine kostenlose Aspose.Cells-Lizenz

Sie können eine kostenlose temporäre Lizenz erhalten und Aspose.Cells für .NET ohne Evaluierungseinschränkungen verwenden.

Fazit

In diesem Artikel haben Sie gelernt, wie Sie XLS- oder XLSX-Dateien von Excel in C# in Google Sheets konvertieren. 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. Außerdem können Sie andere Funktionen von Aspose.Cells für .NET mithilfe der Dokumentation erkunden. Sie können Ihre Fragen auch über unser Forum stellen.

Siehe auch