Bu makale, MS Excel XLS veya XLSX’in C# .NET’te programlı olarak Google Sayfalarına nasıl dönüştürüleceğini kapsar.

Elektronik tablolar genellikle küçük veya büyük ölçekli verileri satırlar ve sütunlar biçiminde depolamak için kullanılır. Elektronik tabloları oluşturmak ve değiştirmek için çeşitli uygulamalar mevcuttur ve bunlardan MS Excel popüler olanıdır. Bunun yanı sıra Google, çevrimiçi e-tablolar oluşturmak ve güncellemek için kullanılan Google E-Tablolar sağlar. Ayrıca, Google E-Tablolar, e-tabloları birden çok kişiyle gerçek zamanlı olarak paylaşmanıza olanak tanır. Belirli durumlarda, Excel XLS veya XLSX dosyalarından Google E-Tablolar’daki bir elektronik tabloya programlı olarak veri aktarmanız gerekebilir. C# .NET’te bir Excel dosyasındaki verileri nasıl okuyup Google E-Tablolar’ın e-tablosuna nasıl yazabileceğinizi görelim.
Ön Koşullar - Excel Dosyasını Google E-Tablolarına Dönüştürün
Verileri Excel XLSX’ten Google E-Tablolara Dışa Aktarma Adımları
Ön Koşullar - Excel Dosyasını C# dilinde Google E-Tablolarına Dönüştürün
Google Bulut Projesi
Google E-Tablolar ile iletişim kurmak için Google Cloud üzerinde bir proje oluşturmamız ve Google E-Tablolar API’sini etkinleştirmemiz gerekecek. Bir proje oluşturmak ve API’yi etkinleştirmek için gereken adımlar aşağıdadır.
- Google Cloud konsoluna gidin.
- Konsolda Yeni bir proje oluştur.
- Az önce oluşturduğunuz projeyi seçin.
- Gezinme menüsünden API’ler ve Hizmetler’i ve ardından Gösterge Tablosu’nu seçin.
- API’leri ve Hizmetleri Etkinleştir düğmesine tıklayın (ayrıntılara bakın).
- Google E-Tablolar API’sini arayın ve etkinleştirin.
- OAuth İzin Ekranını Yapılandır ve uygulamanın kapsamlarını ayarlayın.
- Uygulama yayınlanmadığında kullanılan test kullanıcıları ekleyin.
- API’ler ve Hizmetler sayfasında Kimlik Bilgileri’ne gidin.
- Kimlik Bilgileri Oluştur düğmesini tıklayın ve OAuth istemci kimliğini seçin.
- Uygulama türünde, Masaüstü Uygulaması’nı seçin (çünkü bu yazıda bir konsol uygulaması oluşturuyoruz).
- JSON dosyasını indirin.
Excel’den Google Sayfalarına Dönüştürme için C# .NET API’leri
Excel XLS/XLSX dosyalarından Google E-Tablolar’a veri aktarmak için aşağıdaki API’lere ihtiyacımız olacak.
- .NET için Aspose.Cells - To read the data from Excel files.
- Google.Apis.Sheets.v4 - To create and update spreadsheets on Google Sheets.
Bu makaleyi yazarken Aspose.Cells for .NET 22.2 ve Google.Apis.Sheets.v4 1.56.0.2608’i kullandık.
C# ile Excel XLSX’ten Google E-Tablolara Veri Aktarma
Aşağıda, bir Excel XLSX dosyasından verilerin nasıl okunacağına ve bir C# konsol uygulamasında Google E-Tablolar’a nasıl yazılacağına ilişkin adım adım kılavuz yer almaktadır.
- Visual Studio 2013 veya sonrasında yeni bir konsol uygulama projesi oluşturun.

- Aspose.Cells for .NET ve Google Sheets API’lerini projeye kurun.
PM> Install-Package Aspose.Cells
PM> Install-Package Google.Apis.Sheets.v4
JSON dosyasını kopyalayın (Google Cloud’da kimlik bilgileri oluşturduktan sonra indirdik) ve projenin dizinine yapıştırın.
Kimlik bilgilerini (JSON dosyası) kullanarak Google E-Tablolar hizmetini başlatın ve uygulamanın kapsamlarını tanımlayın. Kapsamlar, sayfalara ve özelliklerine erişim izinlerini tanımlar. Aşağıdaki işlev, Google Sheets hizmetini başlatır ve SheetsService nesnesini döndürür.
using Google.Apis.Auth.OAuth2;
using Google.Apis.Sheets.v4;
using Google.Apis.Services;
using Google.Apis.Util.Store;
public static SheetsService ConnectToGoogle()
{
// Bu kapsamları değiştiriyorsanız, önceden kaydedilmiş kimlik bilgilerinizi silin
// ~/.credentials/sheets.googleapis.com-dotnet-quickstart.json adresinde
string[] Scopes = { SheetsService.Scope.Spreadsheets };
string ApplicationName = "Excel to Google Sheet";
UserCredential credential;
using (var stream =
new FileStream("credentials.json", FileMode.Open, FileAccess.Read))
{
// token.json dosyası, kullanıcının erişim ve yenileme belirteçlerini saklar ve oluşturulur
// yetkilendirme akışı ilk kez tamamlandığında otomatik olarak.
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);
}
// Google E-Tablolar API hizmeti oluştur
var service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
return service;
}
- Google E-Tablolar’da yeni bir e-tablo oluşturan, varsayılan sayfanın adını ayarlayan ve bir E-tablo nesnesi döndüren CreateSpreadsheet işlevi oluşturun.
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)
{
// Yeni bir e-tablo oluştur
var newSpreadSheet = new Google.Apis.Sheets.v4.Data.Spreadsheet();
newSpreadSheet.Properties = new SpreadsheetProperties();
newSpreadSheet.Properties.Title = _spreadsheetName;
// Yeni bir sayfa oluştur
var sheet = new Sheet();
sheet.Properties = new SheetProperties();
sheet.Properties.Title = _defaultSheetName;
newSpreadSheet.Sheets = new List<Sheet>() { sheet };
// İsteği yürüt
var newSheet = _sheetsService.Spreadsheets.Create(newSpreadSheet).Execute();
return newSheet;
}
- Google e-tablosuna yeni bir sayfa eklemek için bir Sayfa Ekle işlevi oluşturun.
public static void AddSheet(SheetsService _sheetsService, string _spreadSheetID, string _sheetName)
{
// Yeni Sayfa ekle
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
});
// İstek oluştur
var batchUpdateRequest =
_sheetsService.Spreadsheets.BatchUpdate(batchUpdateSpreadsheetRequest, _spreadSheetID);
// İsteği yürüt
var response = batchUpdateRequest.Execute();
}
- Şimdi, bir Excel dosyasındaki verileri okuyup Google E-Tablolar’a aktaran yeni bir ExportDataFromExcelToGoogleSheet işlevi oluşturun. Bu işlevde, önce Aspose.Cells for .NET kullanarak Excel XLS/XLSX dosyasını yükleyin ve çalışma kitabındaki ilk çalışma sayfasının adını alın.
// Excel çalışma kitabı yükleme
Workbook wb = new Workbook(_excelFileName);
// İlk çalışma sayfasının adını al
string defaultWorksheetName = wb.Worksheets[0].Name;
- Ardından, Google E-Tablolar’da yeni bir e-tablo oluşturmak için CreateSpreadsheet işlevini çağırın.
// Varsayılan çalışma sayfasıyla yeni bir Google e-tablosu oluşturun
Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);
- Excel dosyasındaki çalışma sayfaları arasında geçiş yapın. Her yinelemede, çalışma sayfasındaki verileri okuyun ve bir listeye ekleyin.
// Çalışma sayfaları arasında döngü
foreach (var sheet in wb.Worksheets)
{
if (sheet.Index == 0)
{
// İlk sayfa varsayılan olarak oluşturulur, bu nedenle yalnızca aralığı ayarlayın
range = $"{defaultWorksheetName}!A:Y";
}
else
{
// yeni bir sayfa ekle
AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
range = $"{sheet.Name}!A:Y";
}
// Satır ve sütun sayısını al
int rows = sheet.Cells.MaxDataRow;
int cols = sheet.Cells.MaxDataColumn;
IList<IList<Object>> list = new List<IList<Object>>() { };
// Satırlarda döngü
for (int i = 0; i < rows; i++)
{
List<object> lists = new List<object>();
// Seçilen satırdaki her sütunda döngü yapın
for (int j = 0; j < cols; j++)
{
lists.Add(sheet.Cells[i, j].Value);
}
list.Add(lists);
}
}
- Excel dosyasındaki her çalışma sayfası için, Google E-Tablolar’daki elektronik tabloya veri yazmak için bir istek oluşturun.
// Aralığı tanımla
ValueRange VRange = new ValueRange();
VRange.Range = range;
// Değerleri ayarla
VRange.Values = list;
// İstek oluştur
SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;
// İsteği yürüt
UpdateValuesResponse response = upd.Execute();
// Yanıt almak
string responseString = JsonConvert.SerializeObject(response);
Google E-Tablolar’da bir Excel dosyasından bir e-tabloya veri aktarmanın tam işlevi aşağıda verilmiştir.
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)
{
// Excel çalışma kitabı yükleme
Workbook wb = new Workbook(_excelFileName);
// İlk çalışma sayfasının adını al
string defaultWorksheetName = wb.Worksheets[0].Name;
// Varsayılan çalışma sayfasıyla yeni bir Google e-tablosu oluşturun
Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);
Console.WriteLine("URL: " + spreadhsheet.SpreadsheetUrl);
Console.WriteLine("ID: " + spreadhsheet.SpreadsheetId);
// Aralığı tanımla
String range;
// Çalışma sayfaları arasında döngü
foreach (var sheet in wb.Worksheets)
{
if (sheet.Index == 0)
{
// İlk sayfa varsayılan olarak oluşturulur, bu nedenle yalnızca aralığı ayarlayın
range = $"{defaultWorksheetName}!A:Y";
}
else
{
// yeni bir sayfa ekle
AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
range = $"{sheet.Name}!A:Y";
}
// Satır ve sütun sayısını al
int rows = sheet.Cells.MaxDataRow;
int cols = sheet.Cells.MaxDataColumn;
IList<IList<Object>> list = new List<IList<Object>>() { };
// Satırlarda döngü
for (int i = 0; i < rows; i++)
{
List<object> lists = new List<object>();
// Seçilen satırdaki her sütunda döngü
for (int j = 0; j < cols; j++)
{
lists.Add(sheet.Cells[i, j].Value);
}
list.Add(lists);
}
// Aralığı tanımla
ValueRange VRange = new ValueRange();
VRange.Range = range;
// Değerleri ayarla
VRange.Values = list;
// İstek oluştur
SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;
// İsteği yürüt
UpdateValuesResponse response = upd.Execute();
// Yanıt almak
string responseString = JsonConvert.SerializeObject(response);
}
}
Kaynak Kodunu Tamamlayın
Aşağıda, bir Excel XLSX dosyasını C# dilinde Google E-Tablolar’a dönüştürmek için eksiksiz kaynak kodu yer almaktadır.
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)
{
// Google'a bağlan
SheetsService sheetService = ConnectToGoogle();
// Verileri Excel dosyasından Google E-Tablolar'a aktarın
ExportDataFromExcelToGoogleSheet(sheetService, "workbook.xlsx");
Console.ReadKey();
}
public static SheetsService ConnectToGoogle()
{
// Bu kapsamları değiştiriyorsanız, önceden kaydedilmiş kimlik bilgilerinizi silin
// ~/.credentials/sheets.googleapis.com-dotnet-quickstart.json adresinde
string[] Scopes = { SheetsService.Scope.Spreadsheets };
string ApplicationName = "Excel to Google Sheet";
UserCredential credential;
using (var stream =
new FileStream("credentials1.json", FileMode.Open, FileAccess.Read))
{
// token.json dosyası, kullanıcının erişim ve yenileme belirteçlerini saklar ve oluşturulur
// yetkilendirme akışı ilk kez tamamlandığında otomatik olarak.
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);
}
// Google E-Tablolar API hizmeti oluştur
var service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
return service;
}
public static void ExportDataFromExcelToGoogleSheet(SheetsService _sheetService, string _excelFileName)
{
// Excel çalışma kitabı yükleme
Workbook wb = new Workbook(_excelFileName);
// İlk çalışma sayfasının adını al
string defaultWorksheetName = wb.Worksheets[0].Name;
// Varsayılan çalışma sayfasıyla yeni bir Google e-tablosu oluşturun
Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);
Console.WriteLine("Spreadsheet URL: " + spreadhsheet.SpreadsheetUrl);
Console.WriteLine("ID: " + spreadhsheet.SpreadsheetId);
// Aralığı tanımla
String range;
// Çalışma sayfaları arasında döngü
foreach (var sheet in wb.Worksheets)
{
if (sheet.Index == 0)
{
// İlk sayfa varsayılan olarak oluşturulur, bu nedenle yalnızca aralığı ayarlayın
range = $"{defaultWorksheetName}!A:Y";
}
else
{
// yeni bir sayfa ekle
AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
range = $"{sheet.Name}!A:Y";
}
// Satır ve sütun sayısını al
int rows = sheet.Cells.MaxDataRow;
int cols = sheet.Cells.MaxDataColumn;
IList<IList<Object>> list = new List<IList<Object>>() { };
// Satırlarda döngü
for (int i = 0; i < rows; i++)
{
List<object> lists = new List<object>();
// Seçilen satırdaki her sütunda döngü yapın
for (int j = 0; j < cols; j++)
{
lists.Add(sheet.Cells[i, j].Value);
}
list.Add(lists);
}
// Aralığı tanımla
ValueRange VRange = new ValueRange();
VRange.Range = range;
// Değerleri ayarla
VRange.Values = list;
// İstek oluştur
SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;
// İsteği yürüt
UpdateValuesResponse response = upd.Execute();
// Yanıt almak
string responseString = JsonConvert.SerializeObject(response);
}
}
public static Spreadsheet CreateSpreadsheet(SheetsService _sheetsService, string _spreadsheetName, string _defaultSheetName)
{
// Yeni bir e-tablo oluştur
var newSpreadSheet = new Google.Apis.Sheets.v4.Data.Spreadsheet();
newSpreadSheet.Properties = new SpreadsheetProperties();
newSpreadSheet.Properties.Title = _spreadsheetName;
// Yeni bir sayfa oluştur
var sheet = new Sheet();
sheet.Properties = new SheetProperties();
sheet.Properties.Title = _defaultSheetName;
newSpreadSheet.Sheets = new List<Sheet>() { sheet };
// İsteği yürüt
var newSheet = _sheetsService.Spreadsheets.Create(newSpreadSheet).Execute();
return newSheet;
}
public static void AddSheet(SheetsService _sheetsService, string _spreadSheetID, string _sheetName)
{
// Yeni Sayfa ekle
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
});
// İstek oluştur
var batchUpdateRequest =
_sheetsService.Spreadsheets.BatchUpdate(batchUpdateSpreadsheetRequest, _spreadSheetID);
// İsteği yürüt
var response = batchUpdateRequest.Execute();
}
}
}
Demo - Excel’i C# ile Google E-Tablolarına Dönüştürün
Ücretsiz Aspose.Cells Lisansı Alın
Ücretsiz bir geçici lisans alabilir ve Aspose.Cells for .NET’i değerlendirme sınırlamaları olmadan kullanabilirsiniz.
Çözüm
Bu makalede, Excel XLS veya XLSX dosyalarının C# dilinde Google E-Tablolar’a nasıl dönüştürüleceğini öğrendiniz. Google Cloud’da proje oluşturmayı, Google Sheets API’yi etkinleştirmeyi, Excel dosyalarını okumayı ve Excel dosyalarından Google Sheets’e veri aktarmayı ele aldık. Ayrıca, belgeleri kullanarak Aspose.Cells for .NET’in diğer özelliklerini keşfedebilirsiniz. Ayrıca sorularınızı forumumuz aracılığıyla da sorabilirsiniz.