Artikel ini membahas cara mengonversi MS Excel XLS atau XLSX ke Google Sheets secara terprogram 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.
- Buka konsol Google Cloud.
- Buat proyek baru di konsol.
- Pilih proyek yang baru saja Anda buat.
- Dari menu navigasi, pilih API dan Layanan lalu Dasbor.
- Klik tombol Aktifkan API dan Layanan (lihat detail).
- Cari dan aktifkan Google Sheets API.
- Konfigurasi Layar Persetujuan OAuth dan tetapkan cakupan aplikasi.
- Tambahkan pengguna uji, yang digunakan saat aplikasi tidak dipublikasikan.
- 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.
- Aspose.Cells for .NET - To read the data from Excel files.
- Google.Apis.Sheets.v4 - To create and update spreadsheets on Google Sheets.
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#.
- Buat proyek aplikasi konsol baru di Visual Studio 2013 atau lebih baru.
- Instal Aspose.Cells for .NET dan Google Sheets API di proyek.
PM> Install-Package Aspose.Cells
PM> Install-Package Google.Apis.Sheets.v4
Salin file JSON (yang telah kami unduh setelah membuat kredensial di Google Cloud) dan tempelkan ke direktori proyek.
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;
}
- 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;
}
- 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();
}
- 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;
- 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);
- 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);
}
}
- 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.