Artikel ini membahas cara mengonversi MS Excel XLS atau XLSX ke Google Sheets secara terprogram di C# .NET.

Konversi Excel XLS atau XLSX ke Google Sheets di C# .NET

Spreadsheet biasanya digunakan untuk menyimpan data skala kecil atau besar dalam bentuk baris dan kolom. Berbagai aplikasi tersedia untuk membuat dan memanipulasi spreadsheet, salah satunya MS Excel yang populer. Selain itu, Google menyediakan Google Sheets, yang digunakan untuk membuat dan memperbarui spreadsheet secara online. Selain itu, Google Spreadsheet memungkinkan Anda berbagi spreadsheet dengan banyak orang secara waktu nyata. Dalam kasus tertentu, Anda mungkin perlu mengekspor data dari file Excel XLS atau XLSX ke spreadsheet di Google Sheets secara terprogram. Jadi mari kita lihat bagaimana Anda bisa membaca data dari file Excel dan menulisnya ke spreadsheet Google Sheets di C# .NET.

Prasyarat - Konversi File Excel ke Google Sheets di C#

Proyek Google Cloud

Untuk berkomunikasi dengan Google Sheets, kita harus membuat project di Google Cloud dan mengaktifkan Google Sheets API. Berikut adalah langkah-langkah untuk membuat proyek dan mengaktifkan API.

  1. Buka konsol Google Cloud.
  2. Buat proyek baru di konsol.
    • Pilih proyek yang baru saja Anda buat.
  3. Dari menu navigasi, pilih API dan Layanan lalu Dasbor.
    • Klik tombol Aktifkan API dan Layanan (lihat detail).
    • Cari dan aktifkan Google Sheets API.
  4. Konfigurasi Layar Persetujuan OAuth dan tetapkan cakupan aplikasi.
    • Tambahkan pengguna uji, yang digunakan saat aplikasi tidak dipublikasikan.
  5. Pada halaman API dan Layanan, buka Kredensial.
    • Klik tombol Buat Kredensial dan pilih ID klien OAuth.
    • Dalam jenis aplikasi, pilih Aplikasi Desktop (karena kami membuat aplikasi konsol di artikel ini).
    • Unduh file JSON.

C# .NET API untuk Konversi Excel ke Google Sheets

Untuk mengekspor data dari file Excel XLS/XLSX ke Google Sheets, kita memerlukan API berikut.

Pada saat penulisan artikel ini, kami menggunakan Aspose.Cells for .NET 22.2 dan Google.Apis.Sheets.v4 1.56.0.2608.

Ekspor Data dari Excel XLSX ke Google Sheets di C#

Berikut ini adalah panduan langkah demi langkah tentang cara membaca data dari file XLSX Excel dan menulisnya ke Google Sheets di aplikasi konsol C#.

  1. Buat proyek aplikasi konsol baru di Visual Studio 2013 atau lebih baru.
Ekspor Data dari Excel XLSX ke Google Sheets di C#
  1. Instal Aspose.Cells for .NET dan Google Sheets API di proyek.
PM> Install-Package Aspose.Cells
PM> Install-Package Google.Apis.Sheets.v4
  1. Salin file JSON (yang telah kami unduh setelah membuat kredensial di Google Cloud) dan tempelkan ke direktori proyek.

  2. Inisialisasi layanan Google Sheets menggunakan kredensial (file JSON) dan tentukan cakupan aplikasi. Cakupan menentukan izin akses ke sheet dan propertinya. Fungsi berikut menginisialisasi layanan Google Sheets dan mengembalikan objek SheetsService.

using Google.Apis.Auth.OAuth2;
using Google.Apis.Sheets.v4;
using Google.Apis.Services;
using Google.Apis.Util.Store;

public static SheetsService ConnectToGoogle()
{
    // Jika mengubah cakupan ini, hapus kredensial Anda yang disimpan sebelumnya
    // di ~/.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))
    {
        // File token.json menyimpan akses pengguna dan token penyegaran, dan dibuat
        // secara otomatis saat alur otorisasi selesai untuk pertama kalinya.
        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);
    }

    // Buat layanan Google Sheets API
    var service = new SheetsService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = ApplicationName,
    });

    return service;
}
  1. Buat fungsi CreateSpreadsheet yang membuat spreadsheet baru di Google Sheets, menyetel nama sheet default, dan mengembalikan objek 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)
{
    // Buat spreadsheet baru
    var newSpreadSheet = new Google.Apis.Sheets.v4.Data.Spreadsheet();
    newSpreadSheet.Properties = new SpreadsheetProperties();
    newSpreadSheet.Properties.Title = _spreadsheetName;

    // Buat lembar baru
    var sheet = new Sheet();
    sheet.Properties = new SheetProperties();
    sheet.Properties.Title = _defaultSheetName;
    newSpreadSheet.Sheets = new List<Sheet>() { sheet };

    // Jalankan permintaan
    var newSheet = _sheetsService.Spreadsheets.Create(newSpreadSheet).Execute();

    return newSheet;
}
  1. Buat fungsi AddSheet untuk menambahkan sheet baru di spreadsheet Google.
public static void AddSheet(SheetsService _sheetsService, string _spreadSheetID, string _sheetName)
{
    // Tambahkan Lembar baru
    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
    });

    // Buat permintaan
    var batchUpdateRequest =
        _sheetsService.Spreadsheets.BatchUpdate(batchUpdateSpreadsheetRequest, _spreadSheetID);

    // Jalankan permintaan
    var response = batchUpdateRequest.Execute();

}
  1. Sekarang, buat fungsi baru ExportDataFromExcelToGoogleSheet, yang membaca dan mengekspor data dari file Excel ke Google Sheets. Dalam fungsi ini, pertama, muat file Excel XLS/XLSX menggunakan Aspose.Cells for .NET dan dapatkan nama lembar kerja pertama di buku kerja.
// Muat buku kerja Excel
Workbook wb = new Workbook(_excelFileName);

// Dapatkan nama lembar kerja pertama
string defaultWorksheetName = wb.Worksheets[0].Name;
  1. Kemudian, panggil fungsi CreateSpreadsheet untuk membuat spreadsheet baru di Google Sheets.
// Buat spreadsheet Google baru dengan lembar kerja default
Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);
  1. Ulangi lembar kerja di file Excel. Di setiap iterasi, baca data dari lembar kerja dan tambahkan ke daftar.
// Ulangi lembar kerja
foreach (var sheet in wb.Worksheets)
{
    if (sheet.Index == 0)
    {
        // Lembar pertama dibuat secara default, jadi hanya atur rentang
        range = $"{defaultWorksheetName}!A:Y";
    }
    else
    {
        // Tambahkan lembar baru
        AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
        range = $"{sheet.Name}!A:Y";
    }

    // Dapatkan jumlah baris dan kolom
    int rows = sheet.Cells.MaxDataRow;
    int cols = sheet.Cells.MaxDataColumn;

    IList<IList<Object>> list = new List<IList<Object>>() { };

    // Ulangi baris
   for (int i = 0; i < rows; i++)
    {
        List<object> lists = new List<object>();

        // Ulangi setiap kolom di baris yang dipilih
       for (int j = 0; j < cols; j++)
        {
            lists.Add(sheet.Cells[i, j].Value);
        }
        list.Add(lists);
    }
}
  1. Untuk setiap lembar kerja di file Excel, buat permintaan untuk menulis data ke spreadsheet di Google Sheets.
// Tentukan rentang
ValueRange VRange = new ValueRange();
VRange.Range = range;

// Tetapkan nilai
VRange.Values = list;

// Buat permintaan
SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;

// Jalankan permintaan
UpdateValuesResponse response = upd.Execute();

// Dapatkan tanggapan
string responseString = JsonConvert.SerializeObject(response);

Fungsi lengkap untuk mengekspor data dari file Excel ke spreadsheet di Google Sheets diberikan di bawah ini.

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)
{
    // Muat buku kerja Excel
    Workbook wb = new Workbook(_excelFileName);

    // Dapatkan nama lembar kerja pertama
    string defaultWorksheetName = wb.Worksheets[0].Name;

    // Buat spreadsheet Google baru dengan lembar kerja default
    Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);

    Console.WriteLine("URL: " + spreadhsheet.SpreadsheetUrl);
    Console.WriteLine("ID: " + spreadhsheet.SpreadsheetId);

    // Tentukan rentang
    String range;

    // Ulangi lembar kerja
    foreach (var sheet in wb.Worksheets)
    {
        if (sheet.Index == 0)
        {
            // Lembar pertama dibuat secara default, jadi hanya atur rentang
            range = $"{defaultWorksheetName}!A:Y";
        }
        else
        {
            // Tambahkan lembar baru
            AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
            range = $"{sheet.Name}!A:Y";
        }

        // Dapatkan jumlah baris dan kolom
        int rows = sheet.Cells.MaxDataRow;
        int cols = sheet.Cells.MaxDataColumn;

        IList<IList<Object>> list = new List<IList<Object>>() { };

        // Ulangi baris
       for (int i = 0; i < rows; i++)
        {
            List<object> lists = new List<object>();

            // Ulangi setiap kolom di baris yang dipilih
           for (int j = 0; j < cols; j++)
            {
                lists.Add(sheet.Cells[i, j].Value);
            }
            list.Add(lists);
        }

        // Tentukan rentang
        ValueRange VRange = new ValueRange();
        VRange.Range = range;

        // Tetapkan nilai
        VRange.Values = list;

        // Buat permintaan
        SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
        upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;

        // Jalankan permintaan
        UpdateValuesResponse response = upd.Execute();

        // Dapatkan tanggapan
        string responseString = JsonConvert.SerializeObject(response);
    }
}

Kode Sumber Lengkap

Berikut ini adalah kode sumber lengkap untuk mengonversi file Excel XLSX ke Google Sheets di 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)
        {
            // Hubungkan ke Google
            SheetsService sheetService = ConnectToGoogle();

            // Ekspor data dari file Excel ke Google Sheets
            ExportDataFromExcelToGoogleSheet(sheetService, "workbook.xlsx");

            Console.ReadKey();
        }
        public static SheetsService ConnectToGoogle()
        {
            // Jika mengubah cakupan ini, hapus kredensial Anda yang disimpan sebelumnya
            // di ~/.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))
            {
                // File token.json menyimpan akses pengguna dan token penyegaran, dan dibuat
                // secara otomatis saat alur otorisasi selesai untuk pertama kalinya.
                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);
            }

            // Buat layanan Google Sheets API
            var service = new SheetsService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = ApplicationName,
            });

            return service;
        }
        public static void ExportDataFromExcelToGoogleSheet(SheetsService _sheetService, string _excelFileName)
        {
            // Muat buku kerja Excel
            Workbook wb = new Workbook(_excelFileName);

            // Dapatkan nama lembar kerja pertama
            string defaultWorksheetName = wb.Worksheets[0].Name;

            // Buat spreadsheet Google baru dengan lembar kerja default
            Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);

            Console.WriteLine("Spreadsheet URL: " + spreadhsheet.SpreadsheetUrl);
            Console.WriteLine("ID: " + spreadhsheet.SpreadsheetId);

            // Tentukan rentang
            String range;

            // Ulangi lembar kerja
            foreach (var sheet in wb.Worksheets)
            {
                if (sheet.Index == 0)
                {
                    // Lembar pertama dibuat secara default, jadi hanya atur rentang
                    range = $"{defaultWorksheetName}!A:Y";
                }
                else
                {
                    // Tambahkan lembar baru
                    AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
                    range = $"{sheet.Name}!A:Y";
                }

                // Dapatkan jumlah baris dan kolom
                int rows = sheet.Cells.MaxDataRow;
                int cols = sheet.Cells.MaxDataColumn;

                IList<IList<Object>> list = new List<IList<Object>>() { };

                // Ulangi baris
               for (int i = 0; i < rows; i++)
                {
                    List<object> lists = new List<object>();

                    // Ulangi setiap kolom di baris yang dipilih
                   for (int j = 0; j < cols; j++)
                    {
                        lists.Add(sheet.Cells[i, j].Value);
                    }
                    list.Add(lists);
                }

                // Tentukan rentang
                ValueRange VRange = new ValueRange();
                VRange.Range = range;

                // Tetapkan nilai
                VRange.Values = list;

                // Buat permintaan
                SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
                upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;

                // Jalankan permintaan
                UpdateValuesResponse response = upd.Execute();

                // Dapatkan tanggapan
                string responseString = JsonConvert.SerializeObject(response);
            }

        }
        public static Spreadsheet CreateSpreadsheet(SheetsService _sheetsService, string _spreadsheetName, string _defaultSheetName)
        {
            // Buat spreadsheet baru
            var newSpreadSheet = new Google.Apis.Sheets.v4.Data.Spreadsheet();
            newSpreadSheet.Properties = new SpreadsheetProperties();
            newSpreadSheet.Properties.Title = _spreadsheetName;

            // Buat lembar baru
            var sheet = new Sheet();
            sheet.Properties = new SheetProperties();
            sheet.Properties.Title = _defaultSheetName;
            newSpreadSheet.Sheets = new List<Sheet>() { sheet };

            // Jalankan permintaan
            var newSheet = _sheetsService.Spreadsheets.Create(newSpreadSheet).Execute();

            return newSheet;

        }
        public static void AddSheet(SheetsService _sheetsService, string _spreadSheetID, string _sheetName)
        {
            // Tambahkan Lembar baru
            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
            });

            // Buat permintaan
            var batchUpdateRequest =
                _sheetsService.Spreadsheets.BatchUpdate(batchUpdateSpreadsheetRequest, _spreadSheetID);

            // Jalankan permintaan
            var response = batchUpdateRequest.Execute();
        }
    }
}

Demo - Mengonversi Excel ke Google Sheets di C#

Dapatkan Lisensi Aspose.Cells Gratis

Anda bisa mendapatkan [lisensi sementara] gratis 11 dan menggunakan Aspose.Cells for .NET tanpa batasan evaluasi.

Kesimpulan

Pada artikel ini, Anda telah mempelajari cara mengonversi file Excel XLS atau XLSX ke Google Sheets di C#. Kami telah membahas cara membuat proyek di Google Cloud, mengaktifkan Google Sheets API, membaca file Excel, dan mengekspor data dari file Excel ke Google Sheets. Selain itu, Anda dapat menjelajahi fitur lain dari Aspose.Cells for .NET menggunakan dokumentasi. Selain itu, Anda dapat mengajukan pertanyaan melalui forum kami.

Lihat juga