Tento článek popisuje, jak programově převést MS 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.
- Přejděte do konzole Google Cloud.
- Vytvořit nový projekt na konzoli.
- Vyberte projekt, který jste právě vytvořili.
- 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.
- Konfigurovat obrazovku souhlasu OAuth a nastavit rozsahy aplikace.
- Přidejte testovací uživatele, kteří se použijí, když aplikace není publikována.
- 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.
- Aspose.Cells pro .NET - To read the data from Excel files.
- Google.Apis.Sheets.v4 - To create and update spreadsheets on Google Sheets.
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#.
- Vytvořte nový projekt konzolové aplikace v sadě Visual Studio 2013 nebo novější.

- Nainstalujte do projektu rozhraní API Aspose.Cells for .NET a Google Sheets.
PM> Install-Package Aspose.Cells
PM> Install-Package Google.Apis.Sheets.v4
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.
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;
}
- 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;
}
- 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();
}
- 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;
- 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);
- 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);
}
}
- 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.