ในบทความนี้ คุณจะได้เรียนรู้วิธีคัดลอกแผ่นงานจากสมุดงาน Excel หลายเล่มลงในสมุดงานเดียวโดยใช้ C# คุณยังจะได้เรียนรู้วิธีคัดลอกข้อมูลจากแผ่นงานหลายแผ่นมาไว้ในแผ่นงานเดียว เริ่มกันเลย.

C# API เพื่อรวมไฟล์ Excel หลายไฟล์

Aspose.Cells for .NET คือ API การจัดการสเปรดชีตที่รู้จักกันดี ซึ่งช่วยให้คุณสร้างและประมวลผลไฟล์ Excel จากภายในแอปพลิเคชัน .NET ของคุณได้ คุณสามารถ ดาวน์โหลด ไบนารีของ API หรือติดตั้งโดยใช้ NuGet

PM> Install-Package Aspose.Cells

รวมไฟล์ Excel หลายไฟล์เป็นไฟล์เดียวโดยใช้ C#

บางครั้ง คุณจำเป็นต้องรวมไฟล์ Excel หลายไฟล์เป็นไฟล์เดียว คุณต้องการคัดลอกแผ่นงานจากสมุดงานต้นทางไปยังสมุดงานปลายทางดังที่แสดงด้านล่าง เอกสาร Excel อาจเป็นเวอร์ชันใดก็ได้ เช่น Excel 97, Excel 2010 หรือ Excel 2016

รวมไฟล์ Excel หลายไฟล์เป็นไฟล์เดียวโดยใช้ C#

รูปที่ 1: รวมไฟล์ Excel

โค้ดตัวอย่างต่อไปนี้แสดงวิธีการรวมไฟล์ Excel หลายไฟล์ให้เป็นไฟล์เดียวโดยใช้ C#

// เปิดไฟล์ Excel ไฟล์แรก
Workbook SourceBook1 = new Workbook("Excel A.xlsx");

// เปิดไฟล์ Excel ไฟล์ที่สอง
Workbook SourceBook2 = new Workbook("Excel B.xlsx");

// เปิดไฟล์ Excel ไฟล์ที่สาม
Workbook SourceBook3 = new Workbook("Excel C.xlsx");

// คัดลอกแผ่นงานของไฟล์ Excel ที่สองไปยังสมุดงานแรก
SourceBook1.Combine(SourceBook2);

// คัดลอกแผ่นงานของไฟล์ Excel ที่สามไปยังสมุดงานแรก
SourceBook1.Combine(SourceBook3);

// บันทึกไฟล์ Excel แรกที่อัปเดตเป็นไฟล์ใหม่
SourceBook1.Save("CombinedFile.xlsx");

รวมแผ่นงานเฉพาะของไฟล์ Excel โดยใช้ C#

โค้ดข้างต้นจะคัดลอกแผ่นงานทั้งหมดในไฟล์ต้นฉบับไปยังไฟล์ปลายทาง อย่างไรก็ตาม คุณอาจต้องการคัดลอกแผ่นงานเฉพาะจากไฟล์ต้นฉบับไปยังไฟล์ปลายทาง ตัวอย่างเช่น คุณมีไฟล์ Excel สองไฟล์ และแต่ละไฟล์มีแผ่นงานสามแผ่นชื่อ การขาย พนักงาน และค่าใช้จ่าย คุณต้องการคัดลอกแผ่นงานการขายจากทั้งสองไฟล์ไปยังไฟล์ปลายทางดังแสดงในรูปต่อไปนี้

รวมแผ่นงานเฉพาะของไฟล์ Excel โดยใช้ C#

รูปที่ 2: รวมแผ่นงานเฉพาะของไฟล์ Excel

โค้ดตัวอย่างต่อไปนี้แสดงวิธีการรวมแผ่นงานเฉพาะของไฟล์ต้นฉบับลงในไฟล์ปลายทางโดยใช้ C#

// เปิดไฟล์ Excel A
Workbook excelA = new Workbook("Excel A.xlsx");

// เปิดไฟล์ Excel B
Workbook excelB = new Workbook("Excel B.xlsx");

// สร้างสมุดงานปลายทาง
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 ที่มีข้อมูลเกี่ยวกับผลิตภัณฑ์ต่างๆ และคุณต้องการรวมแผ่นงานเหล่านี้ให้เป็นแผ่นงานสรุปแผ่นเดียว เช่นนี้

รวมแผ่นงานหลายแผ่นเป็นแผ่นเดียวโดยใช้ C#

รูปที่ 3: รวมแผ่นงานหลายแผ่นเป็นแผ่นเดียว

ข้อมูลโค้ดต่อไปนี้แสดงวิธีคัดลอกข้อมูลจากแผ่นงานหลายแผ่นลงในแผ่นงานเดียวโดยใช้ C#

// เปิดไฟล์ Excel ที่มีแผ่นงาน:
// ผลิตภัณฑ์1 ผลิตภัณฑ์2 และผลิตภัณฑ์3
Workbook workbook = new Workbook("Products.xlsx");

// เพิ่มแผ่นงานชื่อ Summary_sheet
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);
    }
    // ในกรณีของแผ่นงาน Products2 และ Products3
    // ไม่รวมแถวแรก (ซึ่งมีส่วนหัว)
    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");

บทสรุป

ในบทความนี้ คุณได้เรียนรู้วิธีรวมไฟล์ Excel หลายไฟล์เป็นไฟล์เดียวโดยทางโปรแกรม คุณสามารถคัดลอกแผ่นงานทั้งหมดของไฟล์ต้นฉบับหรือเฉพาะไฟล์ไปยังไฟล์ปลายทางได้ คุณยังได้เรียนรู้วิธีการรวมข้อมูลของแผ่นงานหลายแผ่นไว้ในแผ่นงานเดียวอีกด้วย โปรดตรวจสอบ เอกสารประกอบของ Aspose.Cells for .NET สำหรับข้อมูลเพิ่มเติม หากคุณมีคำถามใดๆ โปรดอย่าลังเลที่จะถามเราที่ ฟอรัมการสนับสนุน เราจะตอบพวกเขาภายในไม่กี่ชั่วโมง

ดูสิ่งนี้ด้วย