در این مقاله، شما یاد خواهید گرفت که چگونه برگه‌ها را از چندین کتاب کار اکسل به یک کتاب کار با استفاده از C# کپی کنید. همچنین یاد خواهید گرفت که چگونه داده‌ها را از چندین شیت به یک شیت کپی کنید. بیایید شروع کنیم.

C# API برای ادغام چندین فایل اکسل

Aspose.Cells for .NET یک API معروف برای دستکاری صفحات گسترده است که به شما امکان می‌دهد فایل‌های اکسل را از داخل برنامه‌های .NET خود ایجاد و پردازش کنید. شما می‌توانید یا download باینری‌های API را دانلود کنید یا از طریق NuGet آن را نصب کنید.

PM> Install-Package Aspose.Cells

چندین فایل اکسل را با استفاده از C# به یک فایل ترکیب کنید

گاهی اوقات، شما نیاز دارید که چندین فایل Excel را به یک فایل ترکیب کنید. شما می خواهید ورق های کاری را از کتاب های منبع به کتاب کار مقصد کپی کنید همانطور که در زیر نشان داده شده است. اسناد Excel می توانند از هر نسخه ای مانند Excel 97، Excel 2010 یا Excel 2016 باشند.

چندین فایل اکسل را با استفاده از C# به یک فایل ترکیب کنید

شکل ۱: ترکیب فایل‌های اکسل

کد نمونه زیر نشان می‌دهد که چگونه می‌توان چندین فایل Excel را با استفاده از C# ترکیب کرد.

// Open the first excel file.
Workbook SourceBook1 = new Workbook("Excel A.xlsx");

// Open the second excel file.
Workbook SourceBook2 = new Workbook("Excel B.xlsx");

// فایل اکسل سوم را باز کنید.
Workbook SourceBook3 = new Workbook("Excel C.xlsx");

// کپی برگه‌های فایل Excel دوم به کتاب کار اول.
SourceBook1.Combine(SourceBook2);

// کپی کردن ورق‌های کاری فایل سوم اکسل به کتاب کار اول.
SourceBook1.Combine(SourceBook3);

// فایل اکسل اول به روز شده را به عنوان یک فایل جدید ذخیره کنید.
SourceBook1.Save("CombinedFile.xlsx");

فایل های اکسل را با استفاده از C# ترکیب ورقه های خاص کنید

کد فوق تمام ورق‌های کاری را از فایل‌های منبع به فایل مقصد کپی می‌کند. با این حال، ممکن است بخواهید ورق‌های کاری خاصی را از فایل‌های منبع به فایل مقصد کپی کنید. به عنوان مثال، شما دو فایل Excel دارید و هر کدام سه ورق کاری به نام‌های فروش، کارمندان و هزینه‌ها دارند. شما فقط می‌خواهید ورق کاری فروش را از هر دو فایل به فایل مقصد کپی کنید، همانطور که در شکل زیر نشان داده شده است.

ترکیب برگه‌های خاص فایل‌های اکسل با استفاده از C#

شکل ۲: ترکیب برگه‌های خاص فایل‌های اکسل

کد نمونه زیر نشان می‌دهد که چگونه می‌توان ورق‌های خاصی از فایل‌های منبع را در فایل مقصد با استفاده از C# ترکیب کرد.

// Open Excel A file.
Workbook excelA = new Workbook("Excel A.xlsx");

// Open Excel B file.
Workbook excelB = new Workbook("Excel B.xlsx");

// Create destination Workbook.
Workbook destWorkbook = new Workbook();
// اولین برگه به طور پیش‌فرض به کارنامه اضافه شده است. برگه دوم را اضافه کنید.
destWorkbook.Worksheets.Add();

// به فایل مقصد، برگه فروش فایل Excel A را کپی کنید.
destWorkbook.Worksheets[0].Copy(excelA.Worksheets["Sales"]);

// کپی کنید برگه فروش فایل Excel B را به فایل مقصد.
destWorkbook.Worksheets[1].Copy(excelB.Worksheets["Sales"]);

// به طور پیش‌فرض، نام‌های ورق‌ها "Sheet1" و "Sheet2" به ترتیب هستند.
// بیایید به آنها نام‌های معناداری بدهیم.
destWorkbook.Worksheets[0].Name = excelA.FileName + " - Sales";
destWorkbook.Worksheets[1].Name = excelB.FileName + " - Sales";

// فایل مقصد را ذخیره کنید.
destWorkbook.Save("CombinedFile.xlsx");

چندین برگه را در یک برگه با استفاده از C# ادغام کنید

گاهی اوقات، شما نیاز دارید که داده‌ها را از چندین ورق به یک ورق کپی کنید. به عنوان مثال، شما چند ورق در یک فایل Excel دارید که حاوی اطلاعاتی درباره محصولات مختلف است و می‌خواهید این ورق‌ها را به یک ورق خلاصه ادغام کنید، مانند این:

چگونگی ادغام چندین worksheet به یک worksheet واحد با استفاده از C#

شکل ۳: ادغام چندین برگه به یک برگه

کد نمونه زیر نشان می‌دهد که چگونه می‌توان داده‌ها را از چندین برگه به یک برگه در C# کپی کرد.

// فایلی را که شامل برگه‌های اکسل است باز کنید:
// Products1, Products2 and Products3
Workbook workbook = new Workbook("Products.xlsx");

// Add a worksheet named Summarysheet
Worksheet summarySheet = workbook.Worksheets.Add("Summary_sheet");

// بر روی ورق‌های منبع که داده‌هایی را که می‌خواهید کپی کنید مرور کنید.
// برگه خلاصه
string[] nameOfSourceWorksheets = { "Products1", "Products2", "Products3" };
int totalRowCount = 0;

foreach (string sheetName in nameOfSourceWorksheets)
{
    Worksheet sourceSheet = workbook.Worksheets[sheetName];

    Range sourceRange;
    Range destRange;
    // در صورت برگه Products1 ، همه ردیف‌ها و ستون‌ها را شامل شوید.
    if (sheetName.Equals("Products1"))
    {
        sourceRange = sourceSheet.Cells.MaxDisplayRange;
        
        destRange = summarySheet.Cells.CreateRange(
                sourceRange.FirstRow + totalRowCount,
                sourceRange.FirstColumn,
                sourceRange.RowCount,
                sourceRange.ColumnCount);
    }
    // In case of Products2 and Products3 worksheets,
    // exclude the first row (which contains headings).
    else
    {
        int mdatarow = sourceSheet.Cells.MaxDataRow; // Zero-based
        int mdatacol = sourceSheet.Cells.MaxDataColumn; // Zero-based
        sourceRange = sourceSheet.Cells.CreateRange(0 + 1, 0, mdatarow, mdatacol + 1);

        destRange = summarySheet.Cells.CreateRange(
                sourceRange.FirstRow + totalRowCount -1,
                sourceRange.FirstColumn,
                sourceRange.RowCount,
                sourceRange.ColumnCount);
    }

    // داده‌ها، فرمت‌ها، اشیاء ترسیمی و غیره را از یک
    // محدوده منبع به محدوده مقصد.
    destRange.Copy(sourceRange);
    totalRowCount = sourceRange.RowCount + totalRowCount;
}

// دفتر کار را ذخیره کنید 
workbook.Save("Summarized.xlsx");

نتیجه گیری

در این مقاله، شما آموخته‌اید که چگونه به‌طور برنامه‌نویسی چند فایل اکسل را به یک فایل ترکیب کنید. شما می‌توانید یا همه ورق‌های کاری یک فایل منبع را کپی کنید یا ورق‌های خاصی را به فایل مقصد منتقل کنید. شما همچنین آموخته‌اید که چگونه داده‌های چندین ورق کاری را به یک ورق کاری ترکیب کنید. لطفاً برای اطلاعات بیشتر به documentation of Aspose.Cells for .NET مراجعه کنید. اگر سوالی دارید، لطفاً با کمال میل در Support Forum بپرسید. ما در چند ساعت به آن‌ها پاسخ خواهیم داد.

همچنین ببینید