Este artigo aborda como converter MS Excel XLS ou XLSX em Planilhas Google programaticamente em C# .NET.
As planilhas são comumente usadas para armazenar dados de pequena ou grande escala na forma de linhas e colunas. Vários aplicativos estão disponíveis para criar e manipular planilhas, dos quais MS Excel é um dos mais populares. Além disso, o Google fornece o Google Sheets, que é usado para criar e atualizar planilhas online. Além disso, o Planilhas Google permite compartilhar as planilhas com várias pessoas em tempo real. Em alguns casos, pode ser necessário exportar dados de arquivos Excel XLS ou XLSX para uma planilha no Planilhas Google de forma programática. Então, vamos ver como você pode ler dados de um arquivo do Excel e gravá-los na planilha do Google Sheets em C# .NET.
Pré-requisitos - Converter arquivo do Excel para planilhas do Google
Etapas para exportar dados do Excel XLSX para o Planilhas Google
Pré-requisitos - Converter arquivo do Excel para planilhas do Google em C#
Projeto Google Cloud
Para nos comunicarmos com o Planilhas Google, teremos que criar um projeto no Google Cloud e ativar a API do Planilhas Google. A seguir estão as etapas para criar um projeto e ativar a API.
- Acesse o console do Google Cloud.
- Crie um novo projeto no console.
- Selecione o projeto que você acabou de criar.
- No menu de navegação, selecione APIs e Serviços e, em seguida, Painel.
- Clique no botão Habilitar APIs e Serviços (ver detalhes).
- Pesquise e ative a API do Planilhas Google.
- Configure a tela de consentimento OAuth e defina os escopos do aplicativo.
- Adicione usuários de teste, que são usados quando o aplicativo não é publicado.
- Na página APIs e Serviços, vá para Credenciais.
- Clique no botão Criar credenciais e selecione ID do cliente OAuth.
- Em tipo de aplicativo, selecione Desktop App (já que estamos criando um aplicativo de console neste artigo).
- Baixe o arquivo JSON.
C# .NET APIs para conversão de Excel para Google Sheets
Para exportar dados de arquivos XLS/XLSX do Excel para o Planilhas Google, precisaremos das seguintes APIs.
- Aspose.Cells para .NET - To read the data from Excel files.
- Google.Apis.Planilhas.v4 - To create and update spreadsheets on Google Sheets.
No momento da redação deste artigo, usamos Aspose.Cells para .NET 22.2 e Google.Apis.Sheets.v4 1.56.0.2608.
Exportar dados do Excel XLSX para o Google Sheets em C#
Veja a seguir o guia passo a passo sobre como ler dados de um arquivo XLSX do Excel e gravá-los no Planilhas Google em um aplicativo de console C#.
- Crie um novo projeto de aplicativo de console no Visual Studio 2013 ou posterior.
- Instale as APIs Aspose.Cells para .NET e Google Sheets no projeto.
PM> Install-Package Aspose.Cells
PM> Install-Package Google.Apis.Sheets.v4
Copie o arquivo JSON (que baixamos após criar as credenciais no Google Cloud) e cole-o no diretório do projeto.
Inicialize o serviço do Planilhas Google usando as credenciais (arquivo JSON) e defina os escopos do aplicativo. Os escopos definem as permissões de acesso às planilhas e suas propriedades. A função a seguir inicializa o serviço do Planilhas Google e retorna o objeto 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 estiver modificando esses escopos, exclua suas credenciais salvas anteriormente
// em ~/.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))
{
// O arquivo token.json armazena os tokens de acesso e atualização do usuário e é criado
// automaticamente quando o fluxo de autorização é concluído pela primeira vez.
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);
}
// Criar serviço de API do Planilhas Google
var service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
return service;
}
- Crie a função CreateSpreadsheet que cria uma nova planilha no Google Sheets, define o nome da planilha padrão e retorna um objeto 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)
{
// Criar uma nova planilha
var newSpreadSheet = new Google.Apis.Sheets.v4.Data.Spreadsheet();
newSpreadSheet.Properties = new SpreadsheetProperties();
newSpreadSheet.Properties.Title = _spreadsheetName;
// Criar uma nova planilha
var sheet = new Sheet();
sheet.Properties = new SheetProperties();
sheet.Properties.Title = _defaultSheetName;
newSpreadSheet.Sheets = new List<Sheet>() { sheet };
// Executar solicitação
var newSheet = _sheetsService.Spreadsheets.Create(newSpreadSheet).Execute();
return newSheet;
}
- Crie uma função AddSheet para adicionar uma nova planilha na planilha do Google.
public static void AddSheet(SheetsService _sheetsService, string _spreadSheetID, string _sheetName)
{
// Adicionar nova planilha
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
});
// Criar solicitação
var batchUpdateRequest =
_sheetsService.Spreadsheets.BatchUpdate(batchUpdateSpreadsheetRequest, _spreadSheetID);
// Executar solicitação
var response = batchUpdateRequest.Execute();
}
- Agora, crie uma nova função ExportDataFromExcelToGoogleSheet, que lê e exporta dados de um arquivo Excel para o Planilhas Google. Nesta função, primeiro, carregue o arquivo Excel XLS/XLSX usando Aspose.Cells para .NET e obtenha o nome da primeira planilha na pasta de trabalho.
// Carregar uma pasta de trabalho do Excel
Workbook wb = new Workbook(_excelFileName);
// Obter nome da primeira planilha
string defaultWorksheetName = wb.Worksheets[0].Name;
- Em seguida, chame a função CreateSpreadsheet para criar uma nova planilha no Google Sheets.
// Criar uma nova planilha do Google com planilha padrão
Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);
- Percorra as planilhas no arquivo Excel. Em cada iteração, leia os dados da planilha e adicione-os a uma lista.
// Percorrer planilhas
foreach (var sheet in wb.Worksheets)
{
if (sheet.Index == 0)
{
// A primeira planilha é criada por padrão, portanto, apenas defina o intervalo
range = $"{defaultWorksheetName}!A:Y";
}
else
{
// Adicionar uma nova planilha
AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
range = $"{sheet.Name}!A:Y";
}
// Obter número de linhas e colunas
int rows = sheet.Cells.MaxDataRow;
int cols = sheet.Cells.MaxDataColumn;
IList<IList<Object>> list = new List<IList<Object>>() { };
// Percorrer as linhas
for (int i = 0; i < rows; i++)
{
List<object> lists = new List<object>();
// Percorrer cada coluna na linha selecionada
for (int j = 0; j < cols; j++)
{
lists.Add(sheet.Cells[i, j].Value);
}
list.Add(lists);
}
}
- Para cada planilha no arquivo Excel, crie uma solicitação para gravar dados na planilha no Planilhas Google.
// Definir intervalo
ValueRange VRange = new ValueRange();
VRange.Range = range;
// Definir valores
VRange.Values = list;
// Criar solicitação
SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;
// Executar solicitação
UpdateValuesResponse response = upd.Execute();
// Obter resposta
string responseString = JsonConvert.SerializeObject(response);
A função completa para exportar dados de um arquivo Excel para uma planilha no Google Sheets é fornecida abaixo.
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)
{
// Carregar uma pasta de trabalho do Excel
Workbook wb = new Workbook(_excelFileName);
// Obter nome da primeira planilha
string defaultWorksheetName = wb.Worksheets[0].Name;
// Criar uma nova planilha do Google com planilha padrão
Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);
Console.WriteLine("URL: " + spreadhsheet.SpreadsheetUrl);
Console.WriteLine("ID: " + spreadhsheet.SpreadsheetId);
// Definir intervalo
String range;
// Percorrer planilhas
foreach (var sheet in wb.Worksheets)
{
if (sheet.Index == 0)
{
// A primeira planilha é criada por padrão, portanto, apenas defina o intervalo
range = $"{defaultWorksheetName}!A:Y";
}
else
{
// Adicionar uma nova planilha
AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
range = $"{sheet.Name}!A:Y";
}
// Obter número de linhas e colunas
int rows = sheet.Cells.MaxDataRow;
int cols = sheet.Cells.MaxDataColumn;
IList<IList<Object>> list = new List<IList<Object>>() { };
// Percorrer as linhas
for (int i = 0; i < rows; i++)
{
List<object> lists = new List<object>();
// Percorrer cada coluna na linha selecionada
for (int j = 0; j < cols; j++)
{
lists.Add(sheet.Cells[i, j].Value);
}
list.Add(lists);
}
// Definir intervalo
ValueRange VRange = new ValueRange();
VRange.Range = range;
// Definir valores
VRange.Values = list;
// Criar solicitação
SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;
// Executar solicitação
UpdateValuesResponse response = upd.Execute();
// Obter resposta
string responseString = JsonConvert.SerializeObject(response);
}
}
Código fonte completo
Veja a seguir o código-fonte completo para converter um arquivo XLSX do Excel para o Planilhas Google em 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)
{
// Conectar-se ao Google
SheetsService sheetService = ConnectToGoogle();
// Exportar dados do arquivo Excel para o Planilhas Google
ExportDataFromExcelToGoogleSheet(sheetService, "workbook.xlsx");
Console.ReadKey();
}
public static SheetsService ConnectToGoogle()
{
// Se estiver modificando esses escopos, exclua suas credenciais salvas anteriormente
// em ~/.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))
{
// O arquivo token.json armazena os tokens de acesso e atualização do usuário e é criado
// automaticamente quando o fluxo de autorização é concluído pela primeira vez.
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);
}
// Criar serviço de API do Planilhas Google
var service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
return service;
}
public static void ExportDataFromExcelToGoogleSheet(SheetsService _sheetService, string _excelFileName)
{
// Carregar uma pasta de trabalho do Excel
Workbook wb = new Workbook(_excelFileName);
// Obter nome da primeira planilha
string defaultWorksheetName = wb.Worksheets[0].Name;
// Criar uma nova planilha do Google com planilha padrão
Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);
Console.WriteLine("Spreadsheet URL: " + spreadhsheet.SpreadsheetUrl);
Console.WriteLine("ID: " + spreadhsheet.SpreadsheetId);
// Definir intervalo
String range;
// Percorrer planilhas
foreach (var sheet in wb.Worksheets)
{
if (sheet.Index == 0)
{
// A primeira planilha é criada por padrão, portanto, apenas defina o intervalo
range = $"{defaultWorksheetName}!A:Y";
}
else
{
// Adicionar uma nova planilha
AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
range = $"{sheet.Name}!A:Y";
}
// Obter número de linhas e colunas
int rows = sheet.Cells.MaxDataRow;
int cols = sheet.Cells.MaxDataColumn;
IList<IList<Object>> list = new List<IList<Object>>() { };
// Percorrer as linhas
for (int i = 0; i < rows; i++)
{
List<object> lists = new List<object>();
// Percorrer cada coluna na linha selecionada
for (int j = 0; j < cols; j++)
{
lists.Add(sheet.Cells[i, j].Value);
}
list.Add(lists);
}
// Definir intervalo
ValueRange VRange = new ValueRange();
VRange.Range = range;
// Definir valores
VRange.Values = list;
// Criar solicitação
SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;
// Executar solicitação
UpdateValuesResponse response = upd.Execute();
// Obter resposta
string responseString = JsonConvert.SerializeObject(response);
}
}
public static Spreadsheet CreateSpreadsheet(SheetsService _sheetsService, string _spreadsheetName, string _defaultSheetName)
{
// Criar uma nova planilha
var newSpreadSheet = new Google.Apis.Sheets.v4.Data.Spreadsheet();
newSpreadSheet.Properties = new SpreadsheetProperties();
newSpreadSheet.Properties.Title = _spreadsheetName;
// Criar uma nova planilha
var sheet = new Sheet();
sheet.Properties = new SheetProperties();
sheet.Properties.Title = _defaultSheetName;
newSpreadSheet.Sheets = new List<Sheet>() { sheet };
// Executar solicitação
var newSheet = _sheetsService.Spreadsheets.Create(newSpreadSheet).Execute();
return newSheet;
}
public static void AddSheet(SheetsService _sheetsService, string _spreadSheetID, string _sheetName)
{
// Adicionar nova planilha
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
});
// Criar solicitação
var batchUpdateRequest =
_sheetsService.Spreadsheets.BatchUpdate(batchUpdateSpreadsheetRequest, _spreadSheetID);
// Executar solicitação
var response = batchUpdateRequest.Execute();
}
}
}
Demo - Converter Excel para Google Sheets em C#
Obtenha uma licença gratuita do Aspose.Cells
Você pode obter uma licença temporária gratuita e usar o Aspose.Cells para .NET sem limitações de avaliação.
Conclusão
Neste artigo, você aprendeu como converter arquivos Excel XLS ou XLSX em Planilhas Google em C#. Abordamos como criar um projeto no Google Cloud, ativar a API do Planilhas Google, ler arquivos do Excel e exportar dados de arquivos do Excel para o Planilhas Google. Além disso, você pode explorar outros recursos do Aspose.Cells para .NET usando a documentação. Além disso, você pode fazer suas perguntas através do nosso fórum.