ในบทความนี้ คุณจะได้เรียนรู้วิธีคัดลอกแผ่นงานจากสมุดงาน Excel หลายเล่มลงในสมุดงานเดียวโดยใช้ C# คุณยังจะได้เรียนรู้วิธีคัดลอกข้อมูลจากแผ่นงานหลายแผ่นมาไว้ในแผ่นงานเดียว เริ่มกันเลย.
- รวมไฟล์ Excel หลายไฟล์เป็นไฟล์เดียวโดยใช้ C#
- รวมแผ่นงานเฉพาะของไฟล์ 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

รูปที่ 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 สองไฟล์ และแต่ละไฟล์มีแผ่นงานสามแผ่นชื่อ การขาย พนักงาน และค่าใช้จ่าย คุณต้องการคัดลอกแผ่นงานการขายจากทั้งสองไฟล์ไปยังไฟล์ปลายทางดังแสดงในรูปต่อไปนี้

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

รูปที่ 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 สำหรับข้อมูลเพิ่มเติม หากคุณมีคำถามใดๆ โปรดอย่าลังเลที่จะถามเราที่ ฟอรัมการสนับสนุน เราจะตอบพวกเขาภายในไม่กี่ชั่วโมง