Questo articolo illustra come convertire MS Excel XLS o XLSX in Fogli Google a livello di codice in C# .NET.
I fogli di calcolo sono comunemente usati per archiviare dati su piccola o grande scala sotto forma di righe e colonne. Sono disponibili varie applicazioni per creare e manipolare fogli di calcolo, di cui MS Excel è uno dei più diffusi. Inoltre, Google fornisce Fogli Google, che viene utilizzato per creare e aggiornare fogli di lavoro online. Inoltre, Fogli Google ti consente di condividere i fogli di lavoro con più persone in tempo reale. In alcuni casi, potrebbe essere necessario esportare i dati dai file XLS o XLSX di Excel in un foglio di lavoro in Fogli Google in modo programmatico. Vediamo quindi come leggere i dati da un file Excel e scriverli nel foglio di calcolo di Fogli Google in C# .NET.
Prerequisiti - Converti file Excel in Fogli Google in C#
Progetto Google Cloud
Per comunicare con Fogli Google, dovremo creare un progetto su Google Cloud e abilitare l’API Fogli Google. Di seguito sono riportati i passaggi per creare un progetto e abilitare l’API.
- Vai alla console Google Cloud.
- Crea un nuovo progetto sulla console.
- Seleziona il progetto che hai appena creato.
- Dal menu di navigazione, seleziona API e servizi e poi Dashboard.
- Fare clic sul pulsante Abilita API e servizi (vedi dettagli).
- Cerca e abilita l’API di Fogli Google.
- Configura la schermata di consenso OAuth e imposta gli ambiti dell’applicazione.
- Aggiungi utenti di prova, che vengono utilizzati quando l’applicazione non è pubblicata.
- Nella pagina API e servizi, vai a Credenziali.
- Fare clic sul pulsante Crea credenziali e selezionare ID client OAuth.
- Nel tipo di applicazione, seleziona App desktop (poiché stiamo creando un’applicazione console in questo articolo).
- Scarica il file JSON.
API C# .NET per la conversione da Excel a Fogli Google
Per esportare i dati dai file XLS/XLSX di Excel a Fogli Google, avremo bisogno delle seguenti API.
- Aspose.Cells per .NET - To read the data from Excel files.
- Google.Apis.Sheets.v4 - To create and update spreadsheets on Google Sheets.
Al momento della stesura di questo articolo, abbiamo utilizzato Aspose.Cells per .NET 22.2 e Google.Apis.Sheets.v4 1.56.0.2608.
Esporta dati da Excel XLSX a Fogli Google in C#
Di seguito è riportata la guida dettagliata su come leggere i dati da un file XLSX di Excel e scriverlo in Fogli Google in un’applicazione console C#.
- Creare un nuovo progetto di applicazione console in Visual Studio 2013 o versioni successive.
- Installa Aspose.Cells per .NET e le API di Fogli Google nel progetto.
PM> Install-Package Aspose.Cells
PM> Install-Package Google.Apis.Sheets.v4
Copia il file JSON (che abbiamo scaricato dopo aver creato le credenziali in Google Cloud) e incollalo nella directory del progetto.
Inizializzare il servizio Fogli Google utilizzando le credenziali (file JSON) e definire gli ambiti dell’applicazione. Gli ambiti definiscono le autorizzazioni di accesso ai fogli e alle relative proprietà. La seguente funzione inizializza il servizio Fogli Google e restituisce l’oggetto SheetsService.
using Google.Apis.Auth.OAuth2;
using Google.Apis.Sheets.v4;
using Google.Apis.Services;
using Google.Apis.Util.Store;
public static SheetsService ConnectToGoogle()
{
// Se si modificano questi ambiti, eliminare le credenziali salvate in precedenza
// in ~/.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))
{
// Il file token.json archivia i token di accesso e aggiornamento dell'utente e viene creato
// automaticamente al completamento del flusso di autorizzazione per la prima volta.
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);
}
// Crea il servizio API di Fogli Google
var service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
return service;
}
- Crea la funzione Crea foglio di calcolo che crea un nuovo foglio di calcolo su Fogli Google, imposta il nome del foglio predefinito e restituisce un oggetto Foglio di calcolo.
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)
{
// Crea un nuovo foglio di calcolo
var newSpreadSheet = new Google.Apis.Sheets.v4.Data.Spreadsheet();
newSpreadSheet.Properties = new SpreadsheetProperties();
newSpreadSheet.Properties.Title = _spreadsheetName;
// Crea un nuovo foglio
var sheet = new Sheet();
sheet.Properties = new SheetProperties();
sheet.Properties.Title = _defaultSheetName;
newSpreadSheet.Sheets = new List<Sheet>() { sheet };
// Esegui richiesta
var newSheet = _sheetsService.Spreadsheets.Create(newSpreadSheet).Execute();
return newSheet;
}
- Crea una funzione Aggiungi Foglio per aggiungere un nuovo foglio nel foglio di lavoro di Google.
public static void AddSheet(SheetsService _sheetsService, string _spreadSheetID, string _sheetName)
{
// Aggiungi nuovo foglio
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
});
// Crea richiesta
var batchUpdateRequest =
_sheetsService.Spreadsheets.BatchUpdate(batchUpdateSpreadsheetRequest, _spreadSheetID);
// Esegui richiesta
var response = batchUpdateRequest.Execute();
}
- Ora crea una nuova funzione ExportDataFromExcelToGoogleSheet, che legge ed esporta i dati da un file Excel a Fogli Google. In questa funzione, innanzitutto, carica il file XLS/XLSX di Excel utilizzando Aspose.Cells per .NET e ottieni il nome del primo foglio di lavoro nella cartella di lavoro.
// Carica una cartella di lavoro di Excel
Workbook wb = new Workbook(_excelFileName);
// Ottieni il nome del primo foglio di lavoro
string defaultWorksheetName = wb.Worksheets[0].Name;
- Quindi, chiama la funzione Crea foglio di calcolo per creare un nuovo foglio di lavoro su Fogli Google.
// Crea un nuovo foglio di lavoro Google con il foglio di lavoro predefinito
Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);
- Scorri i fogli di lavoro nel file Excel. In ogni iterazione, leggi i dati dal foglio di lavoro e aggiungili a un elenco.
// Scorri i fogli di lavoro
foreach (var sheet in wb.Worksheets)
{
if (sheet.Index == 0)
{
// Il primo foglio viene creato per impostazione predefinita, quindi imposta solo l'intervallo
range = $"{defaultWorksheetName}!A:Y";
}
else
{
// Aggiungi un nuovo foglio
AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
range = $"{sheet.Name}!A:Y";
}
// Ottieni il numero di righe e colonne
int rows = sheet.Cells.MaxDataRow;
int cols = sheet.Cells.MaxDataColumn;
IList<IList<Object>> list = new List<IList<Object>>() { };
// Passa attraverso le righe
for (int i = 0; i < rows; i++)
{
List<object> lists = new List<object>();
// Scorri ogni colonna nella riga selezionata
for (int j = 0; j < cols; j++)
{
lists.Add(sheet.Cells[i, j].Value);
}
list.Add(lists);
}
}
- Per ogni foglio di lavoro nel file Excel, crea una richiesta per scrivere i dati nel foglio di lavoro in Fogli Google.
// Definisci intervallo
ValueRange VRange = new ValueRange();
VRange.Range = range;
// Imposta i valori
VRange.Values = list;
// Crea richiesta
SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;
// Esegui richiesta
UpdateValuesResponse response = upd.Execute();
// Ottieni risposta
string responseString = JsonConvert.SerializeObject(response);
Di seguito viene fornita la funzione completa per esportare i dati da un file Excel a un foglio di calcolo in Fogli Google.
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)
{
// Carica una cartella di lavoro di Excel
Workbook wb = new Workbook(_excelFileName);
// Ottieni il nome del primo foglio di lavoro
string defaultWorksheetName = wb.Worksheets[0].Name;
// Crea un nuovo foglio di lavoro Google con il foglio di lavoro predefinito
Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);
Console.WriteLine("URL: " + spreadhsheet.SpreadsheetUrl);
Console.WriteLine("ID: " + spreadhsheet.SpreadsheetId);
// Definisci intervallo
String range;
// Scorri i fogli di lavoro
foreach (var sheet in wb.Worksheets)
{
if (sheet.Index == 0)
{
// Il primo foglio viene creato per impostazione predefinita, quindi imposta solo l'intervallo
range = $"{defaultWorksheetName}!A:Y";
}
else
{
// Aggiungi un nuovo foglio
AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
range = $"{sheet.Name}!A:Y";
}
// Ottieni il numero di righe e colonne
int rows = sheet.Cells.MaxDataRow;
int cols = sheet.Cells.MaxDataColumn;
IList<IList<Object>> list = new List<IList<Object>>() { };
// Passa attraverso le righe
for (int i = 0; i < rows; i++)
{
List<object> lists = new List<object>();
// Scorri ogni colonna nella riga selezionata
for (int j = 0; j < cols; j++)
{
lists.Add(sheet.Cells[i, j].Value);
}
list.Add(lists);
}
// Definisci intervallo
ValueRange VRange = new ValueRange();
VRange.Range = range;
// Imposta i valori
VRange.Values = list;
// Crea richiesta
SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;
// Esegui richiesta
UpdateValuesResponse response = upd.Execute();
// Ottieni risposta
string responseString = JsonConvert.SerializeObject(response);
}
}
Codice sorgente completo
Di seguito è riportato il codice sorgente completo per convertire un file XLSX di Excel in Fogli Google 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)
{
// Collegati a Google
SheetsService sheetService = ConnectToGoogle();
// Esporta i dati dal file Excel a Fogli Google
ExportDataFromExcelToGoogleSheet(sheetService, "workbook.xlsx");
Console.ReadKey();
}
public static SheetsService ConnectToGoogle()
{
// Se si modificano questi ambiti, eliminare le credenziali salvate in precedenza
// in ~/.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))
{
// Il file token.json archivia i token di accesso e aggiornamento dell'utente e viene creato
// automaticamente al completamento del flusso di autorizzazione per la prima volta.
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);
}
// Crea il servizio API di Fogli Google
var service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
return service;
}
public static void ExportDataFromExcelToGoogleSheet(SheetsService _sheetService, string _excelFileName)
{
// Carica una cartella di lavoro di Excel
Workbook wb = new Workbook(_excelFileName);
// Ottieni il nome del primo foglio di lavoro
string defaultWorksheetName = wb.Worksheets[0].Name;
// Crea un nuovo foglio di lavoro Google con il foglio di lavoro predefinito
Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);
Console.WriteLine("Spreadsheet URL: " + spreadhsheet.SpreadsheetUrl);
Console.WriteLine("ID: " + spreadhsheet.SpreadsheetId);
// Definisci intervallo
String range;
// Scorri i fogli di lavoro
foreach (var sheet in wb.Worksheets)
{
if (sheet.Index == 0)
{
// Il primo foglio viene creato per impostazione predefinita, quindi imposta solo l'intervallo
range = $"{defaultWorksheetName}!A:Y";
}
else
{
// Aggiungi un nuovo foglio
AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
range = $"{sheet.Name}!A:Y";
}
// Ottieni il numero di righe e colonne
int rows = sheet.Cells.MaxDataRow;
int cols = sheet.Cells.MaxDataColumn;
IList<IList<Object>> list = new List<IList<Object>>() { };
// Passa attraverso le righe
for (int i = 0; i < rows; i++)
{
List<object> lists = new List<object>();
// Scorri ogni colonna nella riga selezionata
for (int j = 0; j < cols; j++)
{
lists.Add(sheet.Cells[i, j].Value);
}
list.Add(lists);
}
// Definisci intervallo
ValueRange VRange = new ValueRange();
VRange.Range = range;
// Imposta i valori
VRange.Values = list;
// Crea richiesta
SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;
// Esegui richiesta
UpdateValuesResponse response = upd.Execute();
// Ottieni risposta
string responseString = JsonConvert.SerializeObject(response);
}
}
public static Spreadsheet CreateSpreadsheet(SheetsService _sheetsService, string _spreadsheetName, string _defaultSheetName)
{
// Crea un nuovo foglio di calcolo
var newSpreadSheet = new Google.Apis.Sheets.v4.Data.Spreadsheet();
newSpreadSheet.Properties = new SpreadsheetProperties();
newSpreadSheet.Properties.Title = _spreadsheetName;
// Crea un nuovo foglio
var sheet = new Sheet();
sheet.Properties = new SheetProperties();
sheet.Properties.Title = _defaultSheetName;
newSpreadSheet.Sheets = new List<Sheet>() { sheet };
// Esegui richiesta
var newSheet = _sheetsService.Spreadsheets.Create(newSpreadSheet).Execute();
return newSheet;
}
public static void AddSheet(SheetsService _sheetsService, string _spreadSheetID, string _sheetName)
{
// Aggiungi nuovo foglio
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
});
// Crea richiesta
var batchUpdateRequest =
_sheetsService.Spreadsheets.BatchUpdate(batchUpdateSpreadsheetRequest, _spreadSheetID);
// Esegui richiesta
var response = batchUpdateRequest.Execute();
}
}
}
Demo - Converti Excel in Fogli Google in C#
Ottieni una licenza Aspose.Cells gratuita
Puoi ottenere una licenza temporanea gratuita e utilizzare Aspose.Cells per .NET senza limitazioni di valutazione.
Conclusione
In questo articolo, hai imparato come convertire i file XLS o XLSX di Excel in Fogli Google in C#. Abbiamo spiegato come creare un progetto su Google Cloud, abilitare l’API di Fogli Google, leggere file Excel ed esportare dati da file Excel a Fogli Google. Inoltre, puoi esplorare altre funzionalità di Aspose.Cells per .NET usando la documentazione. Inoltre, puoi porre le tue domande tramite il nostro forum.