تتناول هذه المقالة كيفية تحويل MS Excel XLS أو XLSX إلى جداول بيانات Google برمجيًا في C# .NET.

تحويل Excel XLS أو XLSX إلى جداول بيانات Google في C# .NET

تُستخدم جداول البيانات بشكل شائع لتخزين البيانات الصغيرة أو الكبيرة الحجم في شكل صفوف وأعمدة. تتوفر العديد من التطبيقات لإنشاء جداول البيانات ومعالجتها ، والتي يعد MS Excel منها أحد البرامج الشائعة. إلى جانب ذلك ، توفر Google Google Sheets ، والتي تُستخدم لإنشاء جداول البيانات وتحديثها عبر الإنترنت. بالإضافة إلى ذلك ، تتيح لك جداول بيانات Google مشاركة جداول البيانات مع عدة أشخاص في الوقت الفعلي. في بعض الحالات ، قد تحتاج إلى تصدير البيانات من ملفات Excel XLS أو XLSX إلى جدول بيانات في جداول بيانات Google برمجيًا. لذلك دعونا نرى كيف يمكنك قراءة البيانات من ملف Excel وكتابتها في جدول بيانات Google Sheets في C# .NET.

المتطلبات الأساسية - تحويل ملف Excel إلى أوراق Google في C#

مشروع جوجل كلاود

للتواصل مع Google Sheets ، سيتعين علينا إنشاء مشروع على Google Cloud وتمكين Google Sheets API. فيما يلي خطوات إنشاء مشروع وتمكين واجهة برمجة التطبيقات.

  1. انتقل إلى وحدة التحكم Google Cloud.
  2. إنشاء مشروع جديد على وحدة التحكم.
    • حدد المشروع الذي قمت بإنشائه للتو.
  3. من قائمة التنقل ، حدد واجهات برمجة التطبيقات والخدمات ثم لوحة القيادة.
    • انقر فوق زر تمكين واجهات برمجة التطبيقات والخدمات (انظر التفاصيل).
    • ابحث وتمكين Google Sheets API.
  4. تكوين شاشة موافقة OAuth وضبط نطاقات التطبيق.
    • أضف مستخدمي الاختبار ، والتي يتم استخدامها عندما لا يتم نشر التطبيق.
  5. في صفحة APIs and Services ، انتقل إلى بيانات الاعتماد.
    • انقر على زر إنشاء بيانات الاعتماد وحدد معرّف عميل OAuth.
    • في نوع التطبيق ، حدد تطبيق سطح المكتب (لأننا نقوم بإنشاء تطبيق وحدة التحكم في هذه الصفحة).
    • قم بتنزيل ملف JSON.

C# .NET APIs لبرنامج Excel لتحويل جداول بيانات Google

لتصدير البيانات من ملفات Excel XLS / XLSX إلى جداول بيانات Google ، سنحتاج إلى واجهات برمجة التطبيقات التالية.

في وقت كتابة هذا المقال ، استخدمنا Aspose.Cells لـ .NET 22.2 و Google.Apis.Sheets.v4 1.56.0.2608.

تصدير البيانات من Excel XLSX إلى جداول بيانات Google في C#

فيما يلي دليل تفصيلي حول كيفية قراءة البيانات من ملف Excel XLSX وكتابتها على جداول بيانات Google في تطبيق وحدة التحكم C#.

  1. قم بإنشاء مشروع تطبيق وحدة تحكم جديد في Visual Studio 2013 أو ما بعده.
تصدير البيانات من Excel XLSX إلى جداول بيانات Google في C#
  1. قم بتثبيت Aspose.Cells for .NET و Google Sheets APIs في المشروع.
PM> Install-Package Aspose.Cells
PM> Install-Package Google.Apis.Sheets.v4
  1. انسخ ملف JSON (تم تنزيله بعد إنشاء بيانات الاعتماد في Google Cloud) والصقه في دليل المشروع.

  2. قم بتهيئة خدمة جداول بيانات Google باستخدام بيانات الاعتماد (ملف JSON) وحدد نطاقات التطبيق. تحدد النطاقات أذونات الوصول إلى الأوراق وخصائصها. تعمل الوظيفة التالية على تهيئة خدمة جداول بيانات 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
    var service = new SheetsService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = ApplicationName,
    });

    return service;
}
  1. إنشاء وظيفة CreateSpreadsheet التي تقوم بإنشاء جدول بيانات جديد على Google Sheets ، وتعيين اسم الورقة الافتراضية ، وإرجاع كائن جدول البيانات.
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. الآن ، قم بإنشاء وظيفة جديدة ExportDataFromExcelToGoogleSheet ، والتي تقوم بقراءة البيانات وتصديرها من ملف Excel إلى جداول بيانات Google. في هذه الوظيفة ، قم أولاً بتحميل ملف Excel XLS / XLSX باستخدام Aspose.Cells لـ .NET واحصل على اسم ورقة العمل الأولى في المصنف.
// قم بتحميل مصنف Excel
Workbook wb = new Workbook(_excelFileName);

// احصل على اسم ورقة العمل الأولى
string defaultWorksheetName = wb.Worksheets[0].Name;
  1. ثم اتصل بوظيفة CreateSpreadsheet لإنشاء جدول بيانات جديد على Google Sheets.
// قم بإنشاء جدول بيانات 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);
    }
}

أكمل كود المصدر

فيما يلي رمز المصدر الكامل لتحويل ملف Excel XLSX إلى جداول بيانات Google في 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)
        {
            // اتصل بـ 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();
        }
    }
}

عرض توضيحي - تحويل Excel إلى أوراق Google في C#

احصل على ترخيص Aspose.Cells مجاني

يمكنك الحصول على ترخيص مؤقت مجانًا واستخدام Aspose.Cells لـ .NET بدون قيود تقييم.

استنتاج

في هذه المقالة ، تعلمت كيفية تحويل ملفات Excel XLS أو XLSX إلى جداول بيانات Google في C#. لقد غطينا كيفية إنشاء مشروع على Google Cloud ، وتمكين Google Sheets API ، وقراءة ملفات Excel ، وتصدير البيانات من ملفات Excel إلى جداول بيانات Google. بالإضافة إلى ذلك ، يمكنك استكشاف ميزات أخرى لـ Aspose.Cells for .NET باستخدام التوثيق. يمكنك أيضًا طرح أسئلتك عبر المنتدى.

أنظر أيضا