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.

C# .NET'te Excel XLS veya XLSX'i Google Sayfalarına Dönüştürün

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ı 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.

  1. Google Cloud konsoluna gidin.
  2. Konsolda Yeni bir proje oluştur.
    • Az önce oluşturduğunuz projeyi seçin.
  3. 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.
  4. 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.
  5. 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.

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.

  1. Visual Studio 2013 veya sonrasında yeni bir konsol uygulama projesi oluşturun.
C# ile Excel XLSX'ten Google E-Tablolara Veri Aktarma
  1. Aspose.Cells for .NET ve Google Sheets API’lerini projeye kurun.
PM> Install-Package Aspose.Cells
PM> Install-Package Google.Apis.Sheets.v4
  1. JSON dosyasını kopyalayın (Google Cloud’da kimlik bilgileri oluşturduktan sonra indirdik) ve projenin dizinine yapıştırın.

  2. 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;
}
  1. 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;
}
  1. 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();

}
  1. Ş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;
  1. 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);
  1. 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);
    }
}
  1. 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.

Ayrıca bakınız