Bài viết này trình bày cách chuyển đổi MS Excel XLS hoặc XLSX sang Google Trang tính theo lập trình trong C# .NET.

Chuyển đổi Excel XLS hoặc XLSX sang Google Trang tính trong C# .NET

Bảng tính thường được sử dụng để lưu trữ dữ liệu quy mô nhỏ hoặc lớn dưới dạng hàng và cột. Có nhiều ứng dụng khác nhau để tạo và thao tác trên bảng tính, trong đó MS Excel là một ứng dụng phổ biến. Bên cạnh đó, Google cung cấp Google Trang tính, được sử dụng để tạo và cập nhật bảng tính trực tuyến. Ngoài ra, Google Trang tính cho phép bạn chia sẻ bảng tính với nhiều người trong thời gian thực. Trong một số trường hợp nhất định, bạn có thể cần xuất dữ liệu từ tệp Excel XLS hoặc XLSX sang bảng tính trong Google Trang tính theo lập trình. Vì vậy, hãy xem cách bạn có thể đọc dữ liệu từ tệp Excel và ghi dữ liệu đó vào bảng tính của Google Trang tính trong C# .NET.

Điều kiện tiên quyết - Chuyển đổi tệp Excel sang Google Trang tính trong C#

Dự án đám mây của Google

Để giao tiếp với Google Trang tính, chúng tôi sẽ phải tạo một dự án trên Google Cloud và bật API Google Trang tính. Sau đây là các bước để tạo một dự án và kích hoạt API.

  1. Đi tới bảng điều khiển Google Cloud.
  2. Tạo một dự án mới trên bảng điều khiển.
    • Chọn dự án bạn vừa tạo.
  3. Từ menu điều hướng, chọn API và Dịch vụ, sau đó chọn Trang tổng quan.
    • Nhấp vào nút Bật API và Dịch vụ (xem chi tiết).
    • Tìm kiếm và bật API Google Trang tính.
  4. Định cấu hình Màn hình đồng ý OAuth và đặt phạm vi ứng dụng.
    • Thêm người dùng thử nghiệm, được sử dụng khi ứng dụng chưa được xuất bản.
  5. Trên trang API và dịch vụ, chuyển đến Thông tin đăng nhập.
    • Nhấp vào nút Tạo thông tin xác thực và chọn ID ứng dụng khách OAuth.
    • Trong loại ứng dụng, chọn Ứng dụng dành cho máy tính để bàn (vì chúng tôi đang tạo ứng dụng bảng điều khiển trong phần mềm này).
    • Tải xuống tệp JSON.

Các API C# .NET dành cho Chuyển đổi Excel sang Google Trang tính

Để xuất dữ liệu từ tệp Excel XLS / XLSX sang Google Trang tính, chúng tôi sẽ cần các API sau.

Tại thời điểm viết bài này, chúng tôi đã sử dụng Aspose.Cells for .NET 22.2 và Google.Apis.Sheets.v4 1.56.0.2608.

Xuất dữ liệu từ Excel XLSX sang Google Trang tính trong C#

Sau đây là hướng dẫn từng bước về cách đọc dữ liệu từ tệp Excel XLSX và ghi dữ liệu đó vào Google Trang tính trong ứng dụng bảng điều khiển C#.

  1. Tạo một dự án ứng dụng bảng điều khiển mới trong Visual Studio 2013 trở lên.
Xuất dữ liệu từ Excel XLSX sang Google Trang tính trong C#
  1. Cài đặt Aspose.Cells cho các API .NET và Google Trang tính trong dự án.
PM> Install-Package Aspose.Cells
PM> Install-Package Google.Apis.Sheets.v4
  1. Sao chép tệp JSON (chúng tôi đã tải xuống sau khi tạo thông tin đăng nhập trong Google Cloud) và dán vào thư mục của dự án.

  2. Khởi tạo dịch vụ Google Trang tính bằng thông tin đăng nhập (tệp JSON) và xác định phạm vi của ứng dụng. Phạm vi xác định quyền truy cập vào trang tính và thuộc tính của chúng. Hàm sau khởi chạy dịch vụ Google Trang tính và trả về đối tượng SheetsService.

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

public static SheetsService ConnectToGoogle()
{
    // Nếu sửa đổi các phạm vi này, hãy xóa thông tin đăng nhập đã lưu trước đó của bạn
    // tại ~ / .credentials / sheet.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))
    {
        // Tệp token.json lưu trữ mã thông báo truy cập và làm mới của người dùng, đồng thời được tạo
        // tự động khi quy trình ủy quyền hoàn tất lần đầu tiên.
        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);
    }

    // Tạo dịch vụ API Google Trang tính
    var service = new SheetsService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = ApplicationName,
    });

    return service;
}
  1. Tạo chức năng CreateS Spreadsheet để tạo một bảng tính mới trên Google Sheets, đặt tên cho trang tính mặc định và trả về một đối tượng Bảng tính.
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)
{
    // Tạo một bảng tính mới
    var newSpreadSheet = new Google.Apis.Sheets.v4.Data.Spreadsheet();
    newSpreadSheet.Properties = new SpreadsheetProperties();
    newSpreadSheet.Properties.Title = _spreadsheetName;

    // Tạo một trang tính mới
    var sheet = new Sheet();
    sheet.Properties = new SheetProperties();
    sheet.Properties.Title = _defaultSheetName;
    newSpreadSheet.Sheets = new List<Sheet>() { sheet };

    // Thực hiện yêu cầu
    var newSheet = _sheetsService.Spreadsheets.Create(newSpreadSheet).Execute();

    return newSheet;
}
  1. Tạo chức năng AddSheet để thêm một trang tính mới trong bảng tính Google.
public static void AddSheet(SheetsService _sheetsService, string _spreadSheetID, string _sheetName)
{
    // Thêm trang tính mới
    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
    });

    // Tạo yêu cầu
    var batchUpdateRequest =
        _sheetsService.Spreadsheets.BatchUpdate(batchUpdateSpreadsheetRequest, _spreadSheetID);

    // Thực hiện yêu cầu
    var response = batchUpdateRequest.Execute();

}
  1. Bây giờ, hãy tạo một hàm mới ExportDataFromExcelToGoogleSheet, hàm này đọc và xuất dữ liệu từ tệp Excel sang Google Trang tính. Trong chức năng này, trước tiên, hãy tải tệp Excel XLS / XLSX bằng Aspose.Cells for .NET và lấy tên của trang tính đầu tiên trong sổ làm việc.
// Tải sổ làm việc Excel
Workbook wb = new Workbook(_excelFileName);

// Lấy tên của trang tính đầu tiên
string defaultWorksheetName = wb.Worksheets[0].Name;
  1. Sau đó, gọi chức năng CreateS Spreadsheet để tạo một bảng tính mới trên Google Sheets.
// Tạo bảng tính Google mới với trang tính mặc định
Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);
  1. Lặp qua các trang tính trong tệp Excel. Trong mỗi lần lặp, hãy đọc dữ liệu từ trang tính và thêm nó vào danh sách.
// Lặp qua các trang tính
foreach (var sheet in wb.Worksheets)
{
    if (sheet.Index == 0)
    {
        // Trang tính đầu tiên được tạo theo mặc định, vì vậy chỉ đặt phạm vi
        range = $"{defaultWorksheetName}!A:Y";
    }
    else
    {
        // Thêm một trang tính mới
        AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
        range = $"{sheet.Name}!A:Y";
    }

    // Nhận số hàng và cột
    int rows = sheet.Cells.MaxDataRow;
    int cols = sheet.Cells.MaxDataColumn;

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

    // Lặp qua các hàng
   for (int i = 0; i < rows; i++)
    {
        List<object> lists = new List<object>();

        // Lặp qua từng cột trong hàng đã chọn
       for (int j = 0; j < cols; j++)
        {
            lists.Add(sheet.Cells[i, j].Value);
        }
        list.Add(lists);
    }
}
  1. Đối với mỗi trang tính trong tệp Excel, hãy tạo yêu cầu ghi dữ liệu vào bảng tính trong Google Trang tính.
// Xác định phạm vi
ValueRange VRange = new ValueRange();
VRange.Range = range;

// Đặt giá trị
VRange.Values = list;

// Tạo yêu cầu
SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;

// Thực hiện yêu cầu
UpdateValuesResponse response = upd.Execute();

// Nhận được phản ứng
string responseString = JsonConvert.SerializeObject(response);

Dưới đây là chức năng hoàn chỉnh để xuất dữ liệu từ tệp Excel sang bảng tính trong Google Trang tính.

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)
{
    // Tải sổ làm việc Excel
    Workbook wb = new Workbook(_excelFileName);

    // Lấy tên của trang tính đầu tiên
    string defaultWorksheetName = wb.Worksheets[0].Name;

    // Tạo bảng tính Google mới với trang tính mặc định
    Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);

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

    // Xác định phạm vi
    String range;

    // Lặp qua các trang tính
    foreach (var sheet in wb.Worksheets)
    {
        if (sheet.Index == 0)
        {
            // Trang tính đầu tiên được tạo theo mặc định, vì vậy chỉ đặt phạm vi
            range = $"{defaultWorksheetName}!A:Y";
        }
        else
        {
            // Thêm một trang tính mới
            AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
            range = $"{sheet.Name}!A:Y";
        }

        // Nhận số hàng và cột
        int rows = sheet.Cells.MaxDataRow;
        int cols = sheet.Cells.MaxDataColumn;

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

        // Lặp qua các hàng
       for (int i = 0; i < rows; i++)
        {
            List<object> lists = new List<object>();

            // Lặp qua từng cột trong hàng đã chọn
           for (int j = 0; j < cols; j++)
            {
                lists.Add(sheet.Cells[i, j].Value);
            }
            list.Add(lists);
        }

        // Xác định phạm vi
        ValueRange VRange = new ValueRange();
        VRange.Range = range;

        // Đặt giá trị
        VRange.Values = list;

        // Tạo yêu cầu
        SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
        upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;

        // Thực hiện yêu cầu
        UpdateValuesResponse response = upd.Execute();

        // Nhận được phản ứng
        string responseString = JsonConvert.SerializeObject(response);
    }
}

Hoàn thành mã nguồn

Sau đây là mã nguồn hoàn chỉnh để chuyển đổi tệp Excel XLSX sang Google Trang tính trong 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)
        {
            // Kết nối với Google
            SheetsService sheetService = ConnectToGoogle();

            // Xuất dữ liệu từ tệp Excel sang Google Trang tính
            ExportDataFromExcelToGoogleSheet(sheetService, "workbook.xlsx");

            Console.ReadKey();
        }
        public static SheetsService ConnectToGoogle()
        {
            // Nếu sửa đổi các phạm vi này, hãy xóa thông tin đăng nhập đã lưu trước đó của bạn
            // tại ~ / .credentials / sheet.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))
            {
                // Tệp token.json lưu trữ mã thông báo truy cập và làm mới của người dùng, đồng thời được tạo
                // tự động khi quy trình ủy quyền hoàn tất lần đầu tiên.
                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);
            }

            // Tạo dịch vụ API Google Trang tính
            var service = new SheetsService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = ApplicationName,
            });

            return service;
        }
        public static void ExportDataFromExcelToGoogleSheet(SheetsService _sheetService, string _excelFileName)
        {
            // Tải sổ làm việc Excel
            Workbook wb = new Workbook(_excelFileName);

            // Lấy tên của trang tính đầu tiên
            string defaultWorksheetName = wb.Worksheets[0].Name;

            // Tạo bảng tính Google mới với trang tính mặc định
            Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);

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

            // Xác định phạm vi
            String range;

            // Lặp qua các trang tính
            foreach (var sheet in wb.Worksheets)
            {
                if (sheet.Index == 0)
                {
                    // Trang tính đầu tiên được tạo theo mặc định, vì vậy chỉ đặt phạm vi
                    range = $"{defaultWorksheetName}!A:Y";
                }
                else
                {
                    // Thêm một trang tính mới
                    AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
                    range = $"{sheet.Name}!A:Y";
                }

                // Nhận số hàng và cột
                int rows = sheet.Cells.MaxDataRow;
                int cols = sheet.Cells.MaxDataColumn;

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

                // Lặp qua các hàng
               for (int i = 0; i < rows; i++)
                {
                    List<object> lists = new List<object>();

                    // Lặp qua từng cột trong hàng đã chọn
                   for (int j = 0; j < cols; j++)
                    {
                        lists.Add(sheet.Cells[i, j].Value);
                    }
                    list.Add(lists);
                }

                // Xác định phạm vi
                ValueRange VRange = new ValueRange();
                VRange.Range = range;

                // Đặt giá trị
                VRange.Values = list;

                // Tạo yêu cầu
                SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
                upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;

                // Thực hiện yêu cầu
                UpdateValuesResponse response = upd.Execute();

                // Nhận được phản ứng
                string responseString = JsonConvert.SerializeObject(response);
            }

        }
        public static Spreadsheet CreateSpreadsheet(SheetsService _sheetsService, string _spreadsheetName, string _defaultSheetName)
        {
            // Tạo một bảng tính mới
            var newSpreadSheet = new Google.Apis.Sheets.v4.Data.Spreadsheet();
            newSpreadSheet.Properties = new SpreadsheetProperties();
            newSpreadSheet.Properties.Title = _spreadsheetName;

            // Tạo một trang tính mới
            var sheet = new Sheet();
            sheet.Properties = new SheetProperties();
            sheet.Properties.Title = _defaultSheetName;
            newSpreadSheet.Sheets = new List<Sheet>() { sheet };

            // Thực hiện yêu cầu
            var newSheet = _sheetsService.Spreadsheets.Create(newSpreadSheet).Execute();

            return newSheet;

        }
        public static void AddSheet(SheetsService _sheetsService, string _spreadSheetID, string _sheetName)
        {
            // Thêm trang tính mới
            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
            });

            // Tạo yêu cầu
            var batchUpdateRequest =
                _sheetsService.Spreadsheets.BatchUpdate(batchUpdateSpreadsheetRequest, _spreadSheetID);

            // Thực hiện yêu cầu
            var response = batchUpdateRequest.Execute();
        }
    }
}

Demo - Chuyển đổi Excel sang Google Trang tính trong C#

Nhận giấy phép Aspose.Cells miễn phí

Bạn có thể nhận giấy phép tạm thời miễn phí và sử dụng Aspose.Cells for .NET mà không có giới hạn đánh giá.

Sự kết luận

Trong bài viết này, bạn đã học cách chuyển đổi tệp Excel XLS hoặc XLSX sang Google Trang tính trong C#. Chúng tôi đã trình bày cách tạo dự án trên Google Cloud, bật API Google Trang tính, đọc tệp Excel và xuất dữ liệu từ tệp Excel sang Google Trang tính. Bên cạnh đó, bạn có thể khám phá các tính năng khác của Aspose.Cells for .NET bằng cách sử dụng tài liệu. Ngoài ra, bạn có thể đặt câu hỏi của mình qua diễn đàn của chúng tôi.

Xem thêm