In dit artikel leer je hoe je werkbladen uit meerdere Excel-werkmappen kopieert naar één werkmap met behulp van C#. U leert ook hoe u gegevens van verschillende werkbladen naar één blad kopieert. Laten we beginnen.
- [Combineer meerdere Excel-bestanden tot één met C#][1]
- [Combineer specifieke werkbladen van Excel-bestanden in één werkmap][2]
- [Meerdere werkbladen samenvoegen tot één met C#][3]
C# API om meerdere Excel-bestanden samen te voegen
[Aspose.Cells for .NET][4] is een bekende spreadsheetmanipulatie-API waarmee u Excel-bestanden kunt maken en verwerken vanuit uw .NET-applicaties. U kunt de binaire bestanden van de API [downloaden][5] of deze laten installeren met behulp van [NuGet][6].
PM> Install-Package Aspose.Cells
Combineer meerdere Excel-bestanden tot één met behulp van C#
Soms moet u meerdere Excel-bestanden samenvoegen tot één bestand. U wilt werkbladen van de bronwerkmappen naar de doelwerkmap kopiëren, zoals hieronder weergegeven. Excel-documenten kunnen van elke versie zijn, zoals Excel 97, Excel 2010 of Excel 2016.

Fig 1: Combineer Excel-bestanden
De volgende voorbeeldcode laat zien hoe u meerdere Excel-bestanden kunt combineren tot één met behulp van 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"); | |
// Open the third excel file. | |
Workbook SourceBook3 = new Workbook("Excel C.xlsx"); | |
// Copy worksheets of second Excel file to the first workbook. | |
SourceBook1.Combine(SourceBook2); | |
// Copy worksheets of third Excel file to the first workbook. | |
SourceBook1.Combine(SourceBook3); | |
// Save the updated first excel file as a new file. | |
SourceBook1.Save("CombinedFile.xlsx"); |
Combineer specifieke werkbladen van Excel-bestanden met C#
De bovenstaande code kopieert alle werkbladen in de bronbestanden naar het doelbestand. Het kan echter zijn dat u specifieke werkbladen van de bronbestanden naar het doelbestand wilt kopiëren. U hebt bijvoorbeeld twee Excel-bestanden en elk heeft drie werkbladen met de namen Verkoop, Werknemers en Onkosten. U wilt alleen het verkoopwerkblad van beide bestanden naar het bestemmingsbestand kopiëren, zoals weergegeven in de volgende afbeelding.

Fig 2: Combineer specifieke werkbladen van Excel-bestanden
De volgende voorbeeldcode laat zien hoe u specifieke werkbladen van bronbestanden kunt combineren in een doelbestand met behulp van 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(); | |
// First worksheet is added by default to the Workbook. Add the second worksheet. | |
destWorkbook.Worksheets.Add(); | |
// Copy the Sales worksheet of Excel A file to destination file. | |
destWorkbook.Worksheets[0].Copy(excelA.Worksheets["Sales"]); | |
// Copy the Sales worksheet of Excel B file to destination file. | |
destWorkbook.Worksheets[1].Copy(excelB.Worksheets["Sales"]); | |
// By default, the worksheet names are "Sheet1" and "Sheet2" respectively. | |
// Lets give them meaningful names. | |
destWorkbook.Worksheets[0].Name = excelA.FileName + " - Sales"; | |
destWorkbook.Worksheets[1].Name = excelB.FileName + " - Sales"; | |
// Save the destination file. | |
destWorkbook.Save("CombinedFile.xlsx"); |
Meerdere werkbladen samenvoegen tot één met behulp van C#
Soms moet u gegevens van verschillende werkbladen naar één werkblad kopiëren. U hebt bijvoorbeeld enkele werkbladen in een Excel-bestand met informatie over verschillende producten en u wilt deze bladen samenvoegen tot één samenvattend werkblad, zoals dit:

Fig 3: meerdere werkbladen samenvoegen tot één
Het volgende codefragment laat zien hoe u met C# gegevens uit verschillende werkbladen naar één werkblad kunt kopiëren.
// Open an Excel file that contains the worksheets: | |
// Products1, Products2 and Products3 | |
Workbook workbook = new Workbook("Products.xlsx"); | |
// Add a worksheet named Summary_sheet | |
Worksheet summarySheet = workbook.Worksheets.Add("Summary_sheet"); | |
// Iterate over source worksheets whose data you want to copy to the | |
// summary worksheet | |
string[] nameOfSourceWorksheets = { "Products1", "Products2", "Products3" }; | |
int totalRowCount = 0; | |
foreach (string sheetName in nameOfSourceWorksheets) | |
{ | |
Worksheet sourceSheet = workbook.Worksheets[sheetName]; | |
Range sourceRange; | |
Range destRange; | |
// In case of Products1 worksheet, include all rows and cols. | |
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); | |
} | |
// Copies data, formatting, drawing objects etc. from a | |
// source range to destination range. | |
destRange.Copy(sourceRange); | |
totalRowCount = sourceRange.RowCount + totalRowCount; | |
} | |
// Save the workbook | |
workbook.Save("Summarized.xlsx"); |
Conclusie
In dit artikel heb je geleerd hoe je meerdere Excel-bestanden programmatisch kunt combineren tot één. U kunt alle werkbladen van een bronbestand of specifieke werkbladen naar het doelbestand kopiëren. U hebt ook geleerd hoe u gegevens van meerdere werkbladen kunt combineren in één werkblad. Raadpleeg de [documentatie van Aspose.Cells voor .NET][10] voor meer informatie. Als je vragen hebt, stel ze dan gerust op ons [Ondersteuningsforum][11]. We zullen ze binnen een paar uur beantwoorden.
Zie ook
- [Wis lege rijen en kolommen in Excel met C#][12]
- [Excel-bestanden converteren naar afbeeldingen met C#][13]
- [Converteer CSV naar Excel-bestanden of Excel naar CSV met C# VB.NET][14] [1]: #Combine-Multiple-Excel-Files [2]: #Combine-Specific-Worksheets-of-Excel-Files [3]: #Merge-Multiple-Worksheets-into-One [4]: https://products.aspose.com/cells/net [5]: https://releases.aspose.com/cells/net/ [6]: http://nuget.org/packages/Aspose.Cells [7]: https://blog.conholdate.com/wp-content/uploads/sites/27/2021/01/Combine-Excel-Documents-1.jpg [8]: https://blog.conholdate.com/wp-content/uploads/sites/27/2021/01/Selective-Merging.png [9]: https://blog.conholdate.com/wp-content/uploads/sites/27/2021/01/merge-sheets-excel.png [10]: https://docs.aspose.com/cells/net/ [11]: https://forum.aspose.com/ [12]: https://blog.conholdate.com/nl/total/delete-blank-rows-and-columns-in-excel-using-csharp/ [13]: https://blog.aspose.com/2021/01/01/convert-excel-files-to-images-in-csharp/ [14]: https://blog.aspose.com/2020/11/17/csv-excel-csharp-vb-net/