이 문서에서는 C# .NET에서 프로그래밍 방식으로 MS Excel XLS 또는 XLSX를 Google 스프레드시트로 변환하는 방법을 다룹니다.

C# .NET에서 Excel XLS 또는 XLSX를 Google 스프레드시트로 변환

스프레드시트는 일반적으로 행과 열의 형태로 소규모 또는 대규모 데이터를 저장하는 데 사용됩니다. 스프레드시트를 만들고 조작하는 데 다양한 응용 프로그램을 사용할 수 있으며 그 중 MS Excel이 널리 사용됩니다. 이와 함께 Google은 온라인에서 스프레드시트를 만들고 업데이트하는 데 사용되는 Google 스프레드시트를 제공합니다. 또한 Google 스프레드시트를 사용하면 실시간으로 여러 사람과 스프레드시트를 공유할 수 있습니다. 경우에 따라 프로그래밍 방식으로 Excel XLS 또는 XLSX 파일의 데이터를 Google 스프레드시트의 스프레드시트로 내보내야 할 수 있습니다. 이제 Excel 파일에서 데이터를 읽고 C# .NET에서 Google 스프레드시트의 스프레드시트에 쓰는 방법을 살펴보겠습니다.

전제 조건 - C#에서 Excel 파일을 Google 스프레드시트로 변환

구글 클라우드 프로젝트

Google Sheets와 통신하려면 Google Cloud에서 프로젝트를 만들고 Google Sheets API를 활성화해야 합니다. 다음은 프로젝트를 생성하고 API를 활성화하는 단계입니다.

  1. Google Cloud 콘솔로 이동합니다.
  2. 콘솔에서 새 프로젝트 생성.
    • 방금 만든 프로젝트를 선택합니다.
  3. 탐색 메뉴에서 API 및 서비스를 선택한 다음 대시보드를 선택하십시오.
    • API 및 서비스 활성화 버튼을 클릭합니다(세부 정보 참조).
    • Google 스프레드시트 API를 검색하고 활성화합니다.
  4. OAuth 동의 화면 구성 및 애플리케이션 범위를 설정합니다.
    • 애플리케이션이 게시되지 않을 때 사용되는 테스트 사용자를 추가합니다.
  5. API 및 서비스 페이지에서 자격 증명으로 이동합니다.
    • Create Credentials 버튼을 클릭하고 OAuth 클라이언트 ID를 선택합니다.
    • 응용 프로그램 유형에서 데스크톱 앱을 선택합니다(이 기사에서는 콘솔 응용 프로그램을 생성하므로).
    • JSON 파일을 다운로드합니다.

Excel에서 Google 스프레드시트로의 변환을 위한 C# .NET API

Excel XLS/XLSX 파일에서 Google 스프레드시트로 데이터를 내보내려면 다음 API가 필요합니다.

이 기사를 작성할 당시 .NET 22.2 및 Google.Apis.Sheets.v4 1.56.0.2608용 Aspose.Cells를 사용했습니다.

Excel XLSX에서 C#의 Google 스프레드시트로 데이터 내보내기

다음은 Excel XLSX 파일에서 데이터를 읽고 C# 콘솔 애플리케이션에서 Google 스프레드시트에 쓰는 방법에 대한 단계별 가이드입니다.

  1. Visual Studio 2013 이상에서 새 콘솔 응용 프로그램 프로젝트를 만듭니다.
Excel XLSX에서 C#의 Google 스프레드시트로 데이터 내보내기
  1. 프로젝트에 Aspose.Cells for .NET 및 Google Sheets API를 설치합니다.
PM> Install-Package Aspose.Cells
PM> Install-Package Google.Apis.Sheets.v4
  1. JSON 파일(Google Cloud에서 자격 증명을 생성한 후 다운로드)을 복사하여 프로젝트 디렉터리에 붙여넣습니다.

  2. 자격 증명(JSON 파일)을 사용하여 Google 스프레드시트 서비스를 초기화하고 애플리케이션 범위를 정의합니다. 범위는 시트 및 해당 속성에 대한 액세스 권한을 정의합니다. 다음 함수는 Google 스프레드시트 서비스를 초기화하고 SheetsService 개체를 반환합니다.

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

public static SheetsService ConnectToGoogle()
{
    // 이러한 범위를 수정하는 경우 이전에 저장한 자격 증명을 삭제하십시오.
    // ~/.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))
    {
        // 파일 token.json은 사용자의 액세스 및 새로 고침 토큰을 저장하고 생성됩니다.
        // 권한 부여 흐름이 처음 완료될 때 자동으로.
        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 스프레드시트 API 서비스 만들기
    var service = new SheetsService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = ApplicationName,
    });

    return service;
}
  1. Google 스프레드시트에 새 스프레드시트를 만들고 기본 시트의 이름을 설정하고 스프레드시트 개체를 반환하는 CreateSpreadsheet 함수를 만듭니다.
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)
{
    // 새 스프레드시트 만들기
    var newSpreadSheet = new Google.Apis.Sheets.v4.Data.Spreadsheet();
    newSpreadSheet.Properties = new SpreadsheetProperties();
    newSpreadSheet.Properties.Title = _spreadsheetName;

    // 새 시트 만들기
    var sheet = new Sheet();
    sheet.Properties = new SheetProperties();
    sheet.Properties.Title = _defaultSheetName;
    newSpreadSheet.Sheets = new List<Sheet>() { sheet };

    // 요청 실행
    var newSheet = _sheetsService.Spreadsheets.Create(newSpreadSheet).Execute();

    return newSheet;
}
  1. AddSheet 함수를 만들어 Google 스프레드시트에 새 시트를 추가합니다.
public static void AddSheet(SheetsService _sheetsService, string _spreadSheetID, string _sheetName)
{
    // 새 시트 추가
    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
    });

    // 요청 생성
    var batchUpdateRequest =
        _sheetsService.Spreadsheets.BatchUpdate(batchUpdateSpreadsheetRequest, _spreadSheetID);

    // 요청 실행
    var response = batchUpdateRequest.Execute();

}
  1. 이제 Excel 파일에서 Google 스프레드시트로 데이터를 읽고 내보내는 새로운 함수 ExportDataFromExcelToGoogleSheet를 만듭니다. 이 함수에서 먼저 .NET용 Aspose.Cells를 사용하여 Excel XLS/XLSX 파일을 로드하고 통합 문서의 첫 번째 워크시트 이름을 가져옵니다.
// Excel 통합 문서 로드
Workbook wb = new Workbook(_excelFileName);

// 첫 번째 워크시트의 이름 가져오기
string defaultWorksheetName = wb.Worksheets[0].Name;
  1. 그런 다음 CreateSpreadsheet 함수를 호출하여 Google 스프레드시트에 새 스프레드시트를 만듭니다.
// 기본 워크시트로 새 Google 스프레드시트 만들기
Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);
  1. Excel 파일에서 워크시트를 반복합니다. 각 반복에서 워크시트에서 데이터를 읽고 목록에 추가합니다.
// 워크시트 반복
foreach (var sheet in wb.Worksheets)
{
    if (sheet.Index == 0)
    {
        // 첫 번째 시트는 기본적으로 생성되므로 범위만 설정
        range = $"{defaultWorksheetName}!A:Y";
    }
    else
    {
        // 새 시트 추가
        AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
        range = $"{sheet.Name}!A:Y";
    }

    // 행과 열의 수 얻기
    int rows = sheet.Cells.MaxDataRow;
    int cols = sheet.Cells.MaxDataColumn;

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

    // 행 반복
    for (int i = 0; i < rows; i++)
    {
        List<object> lists = new List<object>();

        // 선택한 행의 각 열 반복
        for (int j = 0; j < cols; j++)
        {
            lists.Add(sheet.Cells[i, j].Value);
        }
        list.Add(lists);
    }
}
  1. Excel 파일의 각 워크시트에 대해 Google 스프레드시트의 스프레드시트에 데이터 쓰기 요청을 만듭니다.
// 범위 정의
ValueRange VRange = new ValueRange();
VRange.Range = range;

// 값 설정
VRange.Values = list;

// 요청 생성
SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;

// 요청 실행
UpdateValuesResponse response = upd.Execute();

// 응답 받기
string responseString = JsonConvert.SerializeObject(response);

Excel 파일에서 Google 스프레드시트의 스프레드시트로 데이터를 내보내는 전체 기능은 다음과 같습니다.

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 통합 문서 로드
    Workbook wb = new Workbook(_excelFileName);

    // 첫 번째 워크시트의 이름 가져오기
    string defaultWorksheetName = wb.Worksheets[0].Name;

    // 기본 워크시트로 새 Google 스프레드시트 만들기
    Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);

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

    // 범위 정의
    String range;

    // 워크시트 반복
    foreach (var sheet in wb.Worksheets)
    {
        if (sheet.Index == 0)
        {
            // 첫 번째 시트는 기본적으로 생성되므로 범위만 설정
            range = $"{defaultWorksheetName}!A:Y";
        }
        else
        {
            // 새 시트 추가
            AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
            range = $"{sheet.Name}!A:Y";
        }

        // 행과 열의 수 얻기
        int rows = sheet.Cells.MaxDataRow;
        int cols = sheet.Cells.MaxDataColumn;

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

        // 행 반복
        for (int i = 0; i < rows; i++)
        {
            List<object> lists = new List<object>();

            // 선택한 행의 각 열 반복
            for (int j = 0; j < cols; j++)
            {
                lists.Add(sheet.Cells[i, j].Value);
            }
            list.Add(lists);
        }

        // 범위 정의
        ValueRange VRange = new ValueRange();
        VRange.Range = range;

        // 값 설정
        VRange.Values = list;

        // 요청 생성
        SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
        upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;

        // 요청 실행
        UpdateValuesResponse response = upd.Execute();

        // 응답 받기
        string responseString = JsonConvert.SerializeObject(response);
    }
}

완전한 소스 코드

다음은 C#에서 Excel XLSX 파일을 Google 스프레드시트로 변환하는 전체 소스 코드입니다.

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에 연결
            SheetsService sheetService = ConnectToGoogle();

            // Excel 파일에서 Google 스프레드시트로 데이터 내보내기
            ExportDataFromExcelToGoogleSheet(sheetService, "workbook.xlsx");

            Console.ReadKey();
        }
        public static SheetsService ConnectToGoogle()
        {
            // 이러한 범위를 수정하는 경우 이전에 저장한 자격 증명을 삭제하십시오.
            // ~/.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))
            {
                // 파일 token.json은 사용자의 액세스 및 새로 고침 토큰을 저장하고 생성됩니다.
                // 권한 부여 흐름이 처음 완료될 때 자동으로.
                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 Sheets API 서비스 만들기
            var service = new SheetsService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = ApplicationName,
            });

            return service;
        }
        public static void ExportDataFromExcelToGoogleSheet(SheetsService _sheetService, string _excelFileName)
        {
            // Excel 통합 문서 로드
            Workbook wb = new Workbook(_excelFileName);

            // 첫 번째 워크시트의 이름 가져오기
            string defaultWorksheetName = wb.Worksheets[0].Name;

            // 기본 워크시트로 새 Google 스프레드시트 만들기
            Spreadsheet spreadhsheet = CreateSpreadsheet(_sheetService, wb.FileName, defaultWorksheetName);

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

            // 범위 정의
            String range;

            // 워크시트 반복
            foreach (var sheet in wb.Worksheets)
            {
                if (sheet.Index == 0)
                {
                    // 첫 번째 시트는 기본적으로 생성되므로 범위만 설정
                    range = $"{defaultWorksheetName}!A:Y";
                }
                else
                {
                    // 새 시트 추가
                    AddSheet(_sheetService, spreadhsheet.SpreadsheetId, sheet.Name);
                    range = $"{sheet.Name}!A:Y";
                }

                // 행과 열의 수 얻기
                int rows = sheet.Cells.MaxDataRow;
                int cols = sheet.Cells.MaxDataColumn;

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

                // 행 반복
                for (int i = 0; i < rows; i++)
                {
                    List<object> lists = new List<object>();

                    // 선택한 행의 각 열 반복
                    for (int j = 0; j < cols; j++)
                    {
                        lists.Add(sheet.Cells[i, j].Value);
                    }
                    list.Add(lists);
                }

                // 범위 정의
                ValueRange VRange = new ValueRange();
                VRange.Range = range;

                // 값 설정
                VRange.Values = list;

                // 요청 생성
                SpreadsheetsResource.ValuesResource.UpdateRequest upd = _sheetService.Spreadsheets.Values.Update(VRange, spreadhsheet.SpreadsheetId, range);
                upd.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;

                // 요청 실행
                UpdateValuesResponse response = upd.Execute();

                // 응답 받기
                string responseString = JsonConvert.SerializeObject(response);
            }

        }
        public static Spreadsheet CreateSpreadsheet(SheetsService _sheetsService, string _spreadsheetName, string _defaultSheetName)
        {
            // 새 스프레드시트 만들기
            var newSpreadSheet = new Google.Apis.Sheets.v4.Data.Spreadsheet();
            newSpreadSheet.Properties = new SpreadsheetProperties();
            newSpreadSheet.Properties.Title = _spreadsheetName;

            // 새 시트 만들기
            var sheet = new Sheet();
            sheet.Properties = new SheetProperties();
            sheet.Properties.Title = _defaultSheetName;
            newSpreadSheet.Sheets = new List<Sheet>() { sheet };

            // 요청 실행
            var newSheet = _sheetsService.Spreadsheets.Create(newSpreadSheet).Execute();

            return newSheet;

        }
        public static void AddSheet(SheetsService _sheetsService, string _spreadSheetID, string _sheetName)
        {
            // 새 시트 추가
            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
            });

            // 요청 생성
            var batchUpdateRequest =
                _sheetsService.Spreadsheets.BatchUpdate(batchUpdateSpreadsheetRequest, _spreadSheetID);

            // 요청 실행
            var response = batchUpdateRequest.Execute();
        }
    }
}

데모 - C#에서 Excel을 Google 스프레드시트로 변환

무료 Aspose.Cells 라이선스 받기

무료 임시 라이선스를 받고 평가 제한 없이 .NET용 Aspose.Cells를 사용할 수 있습니다.

결론

이 기사에서는 C#에서 Excel XLS 또는 XLSX 파일을 Google 스프레드시트로 변환하는 방법을 배웠습니다. Google Cloud에서 프로젝트를 만들고, Google Sheets API를 활성화하고, Excel 파일을 읽고, Excel 파일에서 Google Sheets로 데이터를 내보내는 방법을 다루었습니다. 게다가 문서를 사용하여 .NET용 Aspose.Cells의 다른 기능을 탐색할 수 있습니다. 또한 포럼을 통해 질문할 수 있습니다.

또한보십시오