W tym artykule dowiesz się, jak kopiować arkusze z wielu skoroszytów programu Excel do jednego skoroszytu przy użyciu języka C#. Dowiesz się także jak skopiować dane z kilku arkuszy do jednego arkusza. Zaczynajmy.
- Połącz wiele plików Excel w jeden za pomocą C#
- Połącz określone arkusze plików Excel w jeden skoroszyt
- Połącz wiele arkuszy w jeden za pomocą języka C#
API C# do łączenia wielu plików Excel
Aspose.Cells for .NET to dobrze znany interfejs API do manipulacji arkuszami kalkulacyjnymi, który umożliwia tworzenie i przetwarzanie plików Excel z poziomu aplikacji .NET. Możesz pobrać pliki binarne interfejsu API lub zainstalować go za pomocą NuGet.
PM> Install-Package Aspose.Cells
Połącz wiele plików Excel w jeden za pomocą C#
Czasami trzeba połączyć wiele plików Excel w jeden plik. Chcesz skopiować arkusze ze skoroszytów źródłowych do skoroszytu docelowego, jak pokazano poniżej. Dokumenty Excel mogą mieć dowolną wersję, np. Excel 97, Excel 2010 lub Excel 2016.

Ryc. 1: Połącz pliki Excel
Poniższy przykładowy kod pokazuje, jak połączyć wiele plików programu Excel w jeden przy użyciu języka C#.
// Otwórz pierwszy plik Excela.
Workbook SourceBook1 = new Workbook("Excel A.xlsx");
// Otwórz drugi plik Excela.
Workbook SourceBook2 = new Workbook("Excel B.xlsx");
// Otwórz trzeci plik Excela.
Workbook SourceBook3 = new Workbook("Excel C.xlsx");
// Skopiuj arkusze drugiego pliku Excel do pierwszego skoroszytu.
SourceBook1.Combine(SourceBook2);
// Skopiuj arkusze trzeciego pliku Excel do pierwszego skoroszytu.
SourceBook1.Combine(SourceBook3);
// Zapisz zaktualizowany pierwszy plik Excela jako nowy plik.
SourceBook1.Save("CombinedFile.xlsx");
Połącz określone arkusze plików Excel za pomocą języka C#
Powyższy kod kopiuje wszystkie arkusze z plików źródłowych do pliku docelowego. Możesz jednak skopiować określone arkusze z plików źródłowych do pliku docelowego. Na przykład masz dwa pliki Excel, a każdy z nich zawiera trzy arkusze o nazwach Sprzedaż, Pracownicy i Wydatki. Chcesz tylko skopiować arkusz sprzedaży z obu plików do pliku docelowego, jak pokazano na poniższym rysunku.

Ryc. 2: Połącz określone arkusze plików Excel
Poniższy przykładowy kod pokazuje, jak połączyć określone arkusze plików źródłowych z plikiem docelowym przy użyciu języka C#.
// Otwórz plik Excela A.
Workbook excelA = new Workbook("Excel A.xlsx");
// Otwórz plik Excela B.
Workbook excelB = new Workbook("Excel B.xlsx");
// Utwórz docelowy skoroszyt.
Workbook destWorkbook = new Workbook();
// Do Skoroszytu domyślnie dodawany jest pierwszy arkusz. Dodaj drugi arkusz.
destWorkbook.Worksheets.Add();
// Skopiuj arkusz sprzedaży pliku Excel A do pliku docelowego.
destWorkbook.Worksheets[0].Copy(excelA.Worksheets["Sales"]);
// Skopiuj arkusz sprzedaży pliku Excel B do pliku docelowego.
destWorkbook.Worksheets[1].Copy(excelB.Worksheets["Sales"]);
// Domyślne nazwy arkuszy to odpowiednio „Arkusz1" i „Arkusz2".
// Nadajmy im znaczące nazwy.
destWorkbook.Worksheets[0].Name = excelA.FileName + " - Sales";
destWorkbook.Worksheets[1].Name = excelB.FileName + " - Sales";
// Zapisz plik docelowy.
destWorkbook.Save("CombinedFile.xlsx");
Połącz wiele arkuszy w jeden za pomocą języka C#
Czasami trzeba skopiować dane z kilku arkuszy do jednego arkusza. Na przykład masz kilka arkuszy w pliku Excel zawierających informacje o różnych produktach i chcesz połączyć te arkusze w jeden arkusz podsumowujący, w następujący sposób:

Ryc. 3: Połącz wiele arkuszy w jeden
Poniższy fragment kodu pokazuje, jak skopiować dane z kilku arkuszy do jednego arkusza przy użyciu języka C#.
// Otwórz plik Excel zawierający arkusze:
// Produkty1, Produkty2 i Produkty3
Workbook workbook = new Workbook("Products.xlsx");
// Dodaj arkusz o nazwie Arkusz_podsumowania
Worksheet summarySheet = workbook.Worksheets.Add("Summary_sheet");
// Iteruj po arkuszach źródłowych, których dane chcesz skopiować do pliku
// arkusz podsumowujący
string[] nameOfSourceWorksheets = { "Products1", "Products2", "Products3" };
int totalRowCount = 0;
foreach (string sheetName in nameOfSourceWorksheets)
{
Worksheet sourceSheet = workbook.Worksheets[sheetName];
Range sourceRange;
Range destRange;
// W przypadku arkusza Produkty1 uwzględnij wszystkie wiersze i kolumny.
if (sheetName.Equals("Products1"))
{
sourceRange = sourceSheet.Cells.MaxDisplayRange;
destRange = summarySheet.Cells.CreateRange(
sourceRange.FirstRow + totalRowCount,
sourceRange.FirstColumn,
sourceRange.RowCount,
sourceRange.ColumnCount);
}
// W przypadku arkuszy Produkty2 i Produkty3,
// wyklucz pierwszy wiersz (który zawiera nagłówki).
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);
}
// Kopiuje dane, formatowanie, obiekty rysunkowe itp. z pliku
// zakres źródłowy do zakresu docelowego.
destRange.Copy(sourceRange);
totalRowCount = sourceRange.RowCount + totalRowCount;
}
// Zapisz skoroszyt
workbook.Save("Summarized.xlsx");
Wniosek
W tym artykule nauczyłeś się programowo łączyć wiele plików Excel w jeden. Możesz skopiować wszystkie arkusze z pliku źródłowego lub wybrane arkusze do pliku docelowego. Nauczyłeś się także, jak łączyć dane z wielu arkuszy w jeden arkusz. Aby uzyskać więcej informacji, sprawdź dokumentację Aspose.Cells for .NET. Jeśli masz jakieś pytania, możesz je zadać na naszym Forum pomocy technicznej. Odpowiemy na nie w ciągu kilku godzin.