Tento článek popisuje, jak programově převést MS Excel XLS nebo XLSX na Tabulky Google v C# .NET.

Převeďte Excel XLS nebo XLSX na Tabulky Google v C# .NET

Tabulkové procesory se běžně používají pro ukládání dat malého nebo velkého rozsahu ve formě řádků a sloupců. Pro vytváření a manipulaci s tabulkami jsou k dispozici různé aplikace, z nichž populární je MS Excel. Kromě toho Google poskytuje Tabulky Google, které se používají k vytváření a aktualizaci tabulek online. Kromě toho vám Tabulky Google umožňují sdílet tabulky s více lidmi v reálném čase. V určitých případech může být nutné exportovat data ze souborů Excel XLS nebo XLSX do tabulky v Tabulkách Google programově. Pojďme se tedy podívat, jak můžete číst data ze souboru aplikace Excel a zapisovat je do tabulky Google Sheets v C# .NET.

Předpoklady – Převést soubor Excel na Tabulky Google v C#

Projekt Google Cloud

Abychom mohli komunikovat s Tabulkami Google, budeme muset vytvořit projekt na Google Cloud a povolit API pro Tabulky Google. Následují kroky k vytvoření projektu a povolení rozhraní API.

  1. Přejděte do konzole Google Cloud.
  2. Vytvořit nový projekt na konzoli.
    • Vyberte projekt, který jste právě vytvořili.
  3. Z navigační nabídky vyberte APIs and Services a poté Dashboard.
    • Klikněte na tlačítko Povolit rozhraní API a služby (viz podrobnosti).
    • Vyhledejte a povolte rozhraní Google Sheets API.
  4. Konfigurovat obrazovku souhlasu OAuth a nastavit rozsahy aplikace.
    • Přidejte testovací uživatele, kteří se použijí, když aplikace není publikována.
  5. Na stránce API and Services přejděte na Credentials.
    • Klikněte na tlačítko Vytvořit přihlašovací údaje a vyberte ID klienta OAuth.
    • V typu aplikace vyberte Desktop App (protože v tomto článku vytváříme konzolovou aplikaci).
    • Stáhněte si soubor JSON.

Konverze rozhraní C# .NET API pro Excel na Tabulky Google

K exportu dat ze souborů Excel XLS/XLSX do Tabulek Google budeme potřebovat následující rozhraní API.

V době psaní tohoto článku jsme používali Aspose.Cells pro .NET 22.2 a Google.Apis.Sheets.v4 1.56.0.2608.

Export dat z Excelu XLSX do Tabulek Google v C#

Následuje podrobný návod, jak číst data ze souboru Excel XLSX a zapisovat je do Tabulek Google v konzolové aplikaci C#.

  1. Vytvořte nový projekt konzolové aplikace v sadě Visual Studio 2013 nebo novější.
Export dat z Excelu XLSX do Tabulek Google v C#
  1. Nainstalujte do projektu rozhraní API Aspose.Cells for .NET a Google Sheets.
PM> Install-Package Aspose.Cells
PM> Install-Package Google.Apis.Sheets.v4
  1. Zkopírujte soubor JSON (stáhli jsme ho po vytvoření přihlašovacích údajů v Google Cloud) a vložte jej do adresáře projektu.

  2. Inicializujte službu Google Sheets pomocí přihlašovacích údajů (soubor JSON) a definujte rozsahy aplikace. Rozsahy definují přístupová oprávnění k listům a jejich vlastnostem. Následující funkce inicializuje službu Tabulky Google a vrátí objekt SheetsService.

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

public static SheetsService ConnectToGoogle()
{
    // Pokud tyto rozsahy upravujete, odstraňte dříve uložené přihlašovací údaje
    // na adrese ~/.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))
    {
        // Soubor token.json ukládá přístupové a obnovovací tokeny uživatele a je vytvořen
        // automaticky, když se autorizační tok poprvé dokončí.
        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);
    }

    // Vytvořte službu Google Sheets API
    var service = new SheetsService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = ApplicationName,
    });

    return service;
}
  1. Funkce CreateSpreadsheet, která vytvoří novou tabulku v Tabulkách Google, nastaví název výchozího listu a vrátí objekt Spreadsheet.
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)
{
    // Vytvořte novou tabulku
    var newSpreadSheet = new Google.Apis.Sheets.v4.Data.Spreadsheet();
    newSpreadSheet.Properties = new SpreadsheetProperties();
    newSpreadSheet.Properties.Title = _spreadsheetName;

    // Vytvořte nový list
    var sheet = new Sheet();
    sheet.Properties = new SheetProperties();
    sheet.Properties.Title = _defaultSheetName;
    newSpreadSheet.Sheets = new List<Sheet>() { sheet };

    // Provést požadavek
    var newSheet = _sheetsService.Spreadsheets.Create(newSpreadSheet).Execute();

    return newSheet;
}
  1. Vytvořte funkci AddSheet pro přidání nového listu do tabulky Google.
public static void AddSheet(SheetsService _sheetsService, string _spreadSheetID, string _sheetName)
{
    // Přidat nový list
    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
    });

    // Vytvořit žádost
    var batchUpdateRequest =
        _sheetsService.Spreadsheets.BatchUpdate(batchUpdateSpreadsheetRequest, _spreadSheetID);

    // Provést požadavek
    var response = batchUpdateRequest.Execute();

}
  1. Nyní vytvořte novou funkci ExportDataFromExcelToGoogleSheet, která čte a exportuje data ze souboru aplikace Excel do Tabulek Google. V této funkci nejprve načtěte soubor Excel XLS/XLSX pomocí Aspose.Cells for .NET a získejte název prvního listu v sešitu.
// Načtěte sešit aplikace Excel
Workbook wb = new Workbook(_excelFileName);

// Získejte název prvního listu
string defaultWorksheetName = wb.Worksheets[0].Name;
  1. Poté zavolejte funkci CreateSpreadsheet a vytvořte novou tabulku v Tabulkách Google.
// Vytvořte novou tabulku Google s výchozím sešitem
Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);
  1. Procházejte listy v souboru aplikace Excel. V každé iteraci načtěte data z listu a přidejte je do seznamu.
// Procházet pracovními listy
foreach (var sheet in wb.Worksheets)
{
    if (sheet.Index == 0)
    {
        // Ve výchozím nastavení je vytvořen první list, takže nastavte pouze rozsah
        range = $"{defaultWorksheetName}!A:Y";
    }
    else
    {
        // Přidejte nový list
        AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
        range = $"{sheet.Name}!A:Y";
    }

    // Získejte počet řádků a sloupců
    int rows = sheet.Cells.MaxDataRow;
    int cols = sheet.Cells.MaxDataColumn;

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

    // Procházet řádky
   for (int i = 0; i < rows; i++)
    {
        List<object> lists = new List<object>();

        // Procházejte každý sloupec ve vybraném řádku
       for (int j = 0; j < cols; j++)
        {
            lists.Add(sheet.Cells[i, j].Value);
        }
        list.Add(lists);
    }
}
  1. Pro každý list v souboru Excel vytvořte požadavek na zápis dat do tabulky v Tabulkách Google.
// Definujte rozsah
ValueRange VRange = new ValueRange();
VRange.Range = range;

// Nastavte hodnoty
VRange.Values = list;

// Vytvořit žádost
SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;

// Provést požadavek
UpdateValuesResponse response = upd.Execute();

// Získejte odpověď
string responseString = JsonConvert.SerializeObject(response);

Kompletní funkce pro export dat ze souboru aplikace Excel do tabulky v Tabulkách Google je uvedena níže.

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)
{
    // Načtěte sešit aplikace Excel
    Workbook wb = new Workbook(_excelFileName);

    // Získejte název prvního listu
    string defaultWorksheetName = wb.Worksheets[0].Name;

    // Vytvořte novou tabulku Google s výchozím sešitem
    Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);

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

    // Definujte rozsah
    String range;

    // Procházet pracovními listy
    foreach (var sheet in wb.Worksheets)
    {
        if (sheet.Index == 0)
        {
            // Ve výchozím nastavení je vytvořen první list, takže nastavte pouze rozsah
            range = $"{defaultWorksheetName}!A:Y";
        }
        else
        {
            // Přidejte nový list
            AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
            range = $"{sheet.Name}!A:Y";
        }

        // Získejte počet řádků a sloupců
        int rows = sheet.Cells.MaxDataRow;
        int cols = sheet.Cells.MaxDataColumn;

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

        // Procházet řádky
       for (int i = 0; i < rows; i++)
        {
            List<object> lists = new List<object>();

            // Procházejte každý sloupec ve vybraném řádku
           for (int j = 0; j < cols; j++)
            {
                lists.Add(sheet.Cells[i, j].Value);
            }
            list.Add(lists);
        }

        // Definujte rozsah
        ValueRange VRange = new ValueRange();
        VRange.Range = range;

        // Nastavte hodnoty
        VRange.Values = list;

        // Vytvořit žádost
        SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
        upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;

        // Provést požadavek
        UpdateValuesResponse response = upd.Execute();

        // Získejte odpověď
        string responseString = JsonConvert.SerializeObject(response);
    }
}

Kompletní zdrojový kód

Níže je uveden úplný zdrojový kód pro převod souboru Excel XLSX na Tabulky Google v 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)
        {
            // Připojte se ke Googlu
            SheetsService sheetService = ConnectToGoogle();

            // Exportujte data ze souboru Excel do Tabulek Google
            ExportDataFromExcelToGoogleSheet(sheetService, "workbook.xlsx");

            Console.ReadKey();
        }
        public static SheetsService ConnectToGoogle()
        {
            // Pokud tyto rozsahy upravujete, odstraňte dříve uložené přihlašovací údaje
            // na adrese ~/.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))
            {
                // Soubor token.json ukládá přístupové a obnovovací tokeny uživatele a je vytvořen
                // automaticky, když se autorizační tok poprvé dokončí.
                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);
            }

            // Vytvořte službu Google Sheets API
            var service = new SheetsService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = ApplicationName,
            });

            return service;
        }
        public static void ExportDataFromExcelToGoogleSheet(SheetsService _sheetService, string _excelFileName)
        {
            // Načtěte sešit aplikace Excel
            Workbook wb = new Workbook(_excelFileName);

            // Získejte název prvního listu
            string defaultWorksheetName = wb.Worksheets[0].Name;

            // Vytvořte novou tabulku Google s výchozím sešitem
            Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);

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

            // Definujte rozsah
            String range;

            // Procházet pracovními listy
            foreach (var sheet in wb.Worksheets)
            {
                if (sheet.Index == 0)
                {
                    // Ve výchozím nastavení je vytvořen první list, takže nastavte pouze rozsah
                    range = $"{defaultWorksheetName}!A:Y";
                }
                else
                {
                    // Přidejte nový list
                    AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
                    range = $"{sheet.Name}!A:Y";
                }

                // Získejte počet řádků a sloupců
                int rows = sheet.Cells.MaxDataRow;
                int cols = sheet.Cells.MaxDataColumn;

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

                // Procházet řádky
               for (int i = 0; i < rows; i++)
                {
                    List<object> lists = new List<object>();

                    // Procházejte každý sloupec ve vybraném řádku
                   for (int j = 0; j < cols; j++)
                    {
                        lists.Add(sheet.Cells[i, j].Value);
                    }
                    list.Add(lists);
                }

                // Definujte rozsah
                ValueRange VRange = new ValueRange();
                VRange.Range = range;

                // Nastavte hodnoty
                VRange.Values = list;

                // Vytvořit žádost
                SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
                upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;

                // Provést požadavek
                UpdateValuesResponse response = upd.Execute();

                // Získejte odpověď
                string responseString = JsonConvert.SerializeObject(response);
            }

        }
        public static Spreadsheet CreateSpreadsheet(SheetsService _sheetsService, string _spreadsheetName, string _defaultSheetName)
        {
            // Vytvořte novou tabulku
            var newSpreadSheet = new Google.Apis.Sheets.v4.Data.Spreadsheet();
            newSpreadSheet.Properties = new SpreadsheetProperties();
            newSpreadSheet.Properties.Title = _spreadsheetName;

            // Vytvořte nový list
            var sheet = new Sheet();
            sheet.Properties = new SheetProperties();
            sheet.Properties.Title = _defaultSheetName;
            newSpreadSheet.Sheets = new List<Sheet>() { sheet };

            // Provést požadavek
            var newSheet = _sheetsService.Spreadsheets.Create(newSpreadSheet).Execute();

            return newSheet;

        }
        public static void AddSheet(SheetsService _sheetsService, string _spreadSheetID, string _sheetName)
        {
            // Přidat nový list
            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
            });

            // Vytvořit žádost
            var batchUpdateRequest =
                _sheetsService.Spreadsheets.BatchUpdate(batchUpdateSpreadsheetRequest, _spreadSheetID);

            // Provést požadavek
            var response = batchUpdateRequest.Execute();
        }
    }
}

Ukázka – Převod Excelu na Tabulky Google v C#

Získejte bezplatnou licenci Aspose.Cells

Můžete získat zdarma dočasnou licenci a používat Aspose.Cells pro .NET bez omezení hodnocení.

Závěr

V tomto článku jste se naučili, jak převést soubory Excel XLS nebo XLSX do Tabulek Google v C#. Probrali jsme, jak vytvořit projekt v Google Cloud, povolit Google Sheets API, číst soubory Excel a exportovat data ze souborů Excel do Tabulek Google. Kromě toho můžete prozkoumat další funkce Aspose.Cells pro .NET pomocí dokumentace. Také můžete klást své dotazy prostřednictvím našeho fóra.

Viz také