In questo articolo imparerai come copiare fogli da più cartelle di lavoro di Excel in un’unica cartella di lavoro usando C#. Imparerai anche come copiare i dati da più fogli di lavoro in un unico foglio. Iniziamo.

API C# per unire più file Excel

Aspose.Cells for .NET è una nota API di manipolazione del foglio di calcolo che ti consente di creare ed elaborare file Excel dall’interno delle tue applicazioni .NET. Puoi scaricare i binari dell’API o installarlo utilizzando NuGet.

PM> Install-Package Aspose.Cells

Combina più file Excel in uno usando C#

A volte, è necessario unire più file Excel in un unico file. Si desidera copiare i fogli di lavoro dalle cartelle di lavoro di origine alla cartella di lavoro di destinazione come mostrato di seguito. I documenti Excel possono essere di qualsiasi versione come Excel 97, Excel 2010 o Excel 2016.

Combina più file Excel in uno usando C#

Fig 1: combina file Excel

Il codice di esempio seguente mostra come combinare più file di Excel in uno solo usando C#.

// Apri il primo file excel.
Workbook SourceBook1 = new Workbook("Excel A.xlsx");

// Apri il secondo file excel.
Workbook SourceBook2 = new Workbook("Excel B.xlsx");

// Apri il terzo file excel.
Workbook SourceBook3 = new Workbook("Excel C.xlsx");

// Copia i fogli di lavoro del secondo file Excel nella prima cartella di lavoro.
SourceBook1.Combine(SourceBook2);

// Copia i fogli di lavoro del terzo file Excel nella prima cartella di lavoro.
SourceBook1.Combine(SourceBook3);

// Salva il primo file excel aggiornato come nuovo file.
SourceBook1.Save("CombinedFile.xlsx");

Combina fogli di lavoro specifici di file Excel usando C#

Il codice precedente copia tutti i fogli di lavoro nei file di origine nel file di destinazione. Tuttavia, potresti voler copiare fogli di lavoro specifici dai file di origine al file di destinazione. Ad esempio, hai due file Excel e ognuno ha tre fogli di lavoro denominati Vendite, Dipendenti e Spese. Vuoi solo copiare il foglio di lavoro Sales da entrambi i file nel file di destinazione, come mostrato nella figura seguente.

Combina fogli di lavoro specifici di file Excel usando C#

Fig 2: Combina fogli di lavoro specifici di file Excel

Il codice di esempio seguente mostra come combinare fogli di lavoro specifici di file di origine in un file di destinazione usando C#.

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

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

// Crea cartella di lavoro di destinazione.
Workbook destWorkbook = new Workbook();
// Il primo foglio di lavoro viene aggiunto per impostazione predefinita alla cartella di lavoro. Aggiungi il secondo foglio di lavoro.
destWorkbook.Worksheets.Add();

// Copia il foglio di lavoro Vendite di Excel A nel file di destinazione.
destWorkbook.Worksheets[0].Copy(excelA.Worksheets["Sales"]);

// Copia il foglio di lavoro Vendite del file Excel B nel file di destinazione.
destWorkbook.Worksheets[1].Copy(excelB.Worksheets["Sales"]);

// Per impostazione predefinita, i nomi dei fogli di lavoro sono rispettivamente "Foglio1" e "Foglio2".
// Diamo loro nomi significativi.
destWorkbook.Worksheets[0].Name = excelA.FileName + " - Sales";
destWorkbook.Worksheets[1].Name = excelB.FileName + " - Sales";

// Salva il file di destinazione.
destWorkbook.Save("CombinedFile.xlsx");

Unisci più fogli di lavoro in uno usando C#

A volte, è necessario copiare i dati da più fogli di lavoro in un foglio di lavoro. Ad esempio, hai alcuni fogli di lavoro in un file Excel che contengono informazioni su prodotti diversi e desideri unire questi fogli in un foglio di lavoro di riepilogo, in questo modo:

Unisci più fogli di lavoro in uno usando C#

Fig 3: unisci più fogli di lavoro in uno

Il frammento di codice seguente mostra come copiare dati da più fogli di lavoro in un foglio di lavoro usando C#.

// Apri un file Excel che contiene i fogli di lavoro:
// Prodotti1, Prodotti2 e Prodotti3
Workbook workbook = new Workbook("Products.xlsx");

// Aggiungi un foglio di lavoro denominato Summary_sheet
Worksheet summarySheet = workbook.Worksheets.Add("Summary_sheet");

// Esegui l'iterazione sui fogli di lavoro di origine di cui desideri copiare i dati in
// foglio di lavoro riassuntivo
string[] nameOfSourceWorksheets = { "Products1", "Products2", "Products3" };
int totalRowCount = 0;

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

    Range sourceRange;
    Range destRange;
    // In caso di foglio di lavoro Products1, includi tutte le righe e le colonne.
    if (sheetName.Equals("Products1"))
    {
        sourceRange = sourceSheet.Cells.MaxDisplayRange;
        
        destRange = summarySheet.Cells.CreateRange(
                sourceRange.FirstRow + totalRowCount,
                sourceRange.FirstColumn,
                sourceRange.RowCount,
                sourceRange.ColumnCount);
    }
    // In caso di fogli di lavoro Products2 e Products3,
    // escludere la prima riga (che contiene le intestazioni).
    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);
    }

    // Copia dati, formattazione, disegno di oggetti ecc. da a
    // dall'intervallo di origine all'intervallo di destinazione.
    destRange.Copy(sourceRange);
    totalRowCount = sourceRange.RowCount + totalRowCount;
}

// Salva la cartella di lavoro 
workbook.Save("Summarized.xlsx");

Conclusione

In questo articolo, hai imparato come combinare a livello di codice più file Excel in uno solo. Puoi copiare tutti i fogli di lavoro di un file di origine o quelli specifici nel file di destinazione. Hai anche imparato a combinare i dati di più fogli di lavoro in un foglio di lavoro. Si prega di controllare la documentazione di Aspose.Cells per .NET per ulteriori informazioni. In caso di domande, non esitare a chiedere al nostro Forum di supporto. Risponderemo in poche ore.

Guarda anche