Neste artigo, você aprenderá a copiar planilhas de várias pastas de trabalho do Excel em uma pasta de trabalho usando C#. Você também aprenderá a copiar dados de várias planilhas em uma planilha. Vamos começar.
- Combine vários arquivos do Excel em um usando C #
- Combine planilhas específicas de arquivos do Excel em uma pasta de trabalho
- Mesclar várias planilhas em uma usando C #
API C# para mesclar vários arquivos do Excel
Aspose.Cells for .NET é uma API de manipulação de planilhas bem conhecida que permite criar e processar arquivos Excel a partir de seus aplicativos .NET. Você pode baixar os binários da API ou instalá-la usando NuGet.
PM> Install-Package Aspose.Cells
Combine vários arquivos do Excel em um usando C
Às vezes, você precisa mesclar vários arquivos do Excel em um arquivo. Você deseja copiar planilhas das pastas de trabalho de origem para a pasta de trabalho de destino, conforme mostrado abaixo. Os documentos do Excel podem ser de qualquer versão, como Excel 97, Excel 2010 ou Excel 2016.

Fig 1: Combinar arquivos do Excel
O código de exemplo a seguir mostra como combinar vários arquivos do Excel em um usando C#.
// Abra o primeiro arquivo do Excel.
Workbook SourceBook1 = new Workbook("Excel A.xlsx");
// Abra o segundo arquivo do Excel.
Workbook SourceBook2 = new Workbook("Excel B.xlsx");
// Abra o terceiro arquivo do Excel.
Workbook SourceBook3 = new Workbook("Excel C.xlsx");
// Copie as planilhas do segundo arquivo do Excel para a primeira pasta de trabalho.
SourceBook1.Combine(SourceBook2);
// Copie as planilhas do terceiro arquivo do Excel para a primeira pasta de trabalho.
SourceBook1.Combine(SourceBook3);
// Salve o primeiro arquivo excel atualizado como um novo arquivo.
SourceBook1.Save("CombinedFile.xlsx");
Combine planilhas específicas de arquivos do Excel usando C
O código acima copia todas as planilhas nos arquivos de origem para o arquivo de destino. No entanto, você pode querer copiar planilhas específicas dos arquivos de origem para o arquivo de destino. Por exemplo, você tem dois arquivos do Excel e cada um tem três planilhas denominadas Vendas, Funcionários e Despesas. Você só deseja copiar a planilha de vendas de ambos os arquivos para o arquivo de destino, conforme mostrado na figura a seguir.

Fig 2: Combinar planilhas específicas de arquivos do Excel
O código de exemplo a seguir mostra como combinar planilhas específicas de arquivos de origem no arquivo de destino usando C#.
// Abra o arquivo Excel A.
Workbook excelA = new Workbook("Excel A.xlsx");
// Abra o arquivo Excel B.
Workbook excelB = new Workbook("Excel B.xlsx");
// Criar pasta de trabalho de destino.
Workbook destWorkbook = new Workbook();
// A primeira planilha é adicionada por padrão à pasta de trabalho. Adicione a segunda planilha.
destWorkbook.Worksheets.Add();
// Copie a planilha de vendas do arquivo Excel A para o arquivo de destino.
destWorkbook.Worksheets[0].Copy(excelA.Worksheets["Sales"]);
// Copie a planilha de vendas do arquivo Excel B para o arquivo de destino.
destWorkbook.Worksheets[1].Copy(excelB.Worksheets["Sales"]);
// Por padrão, os nomes das planilhas são "Sheet1" e "Sheet2", respectivamente.
// Vamos dar-lhes nomes significativos.
destWorkbook.Worksheets[0].Name = excelA.FileName + " - Sales";
destWorkbook.Worksheets[1].Name = excelB.FileName + " - Sales";
// Salve o arquivo de destino.
destWorkbook.Save("CombinedFile.xlsx");
Mesclar várias planilhas em uma usando C
Às vezes, você precisa copiar dados de várias planilhas em uma planilha. Por exemplo, você tem algumas planilhas em um arquivo do Excel que contém informações sobre diferentes produtos e deseja mesclar essas planilhas em uma planilha de resumo, como esta:

Fig 3: Mesclar várias planilhas em uma
O trecho de código a seguir mostra como copiar dados de várias planilhas em uma planilha usando C#.
// Abra um arquivo do Excel que contenha as planilhas:
// Produtos1, Produtos2 e Produtos3
Workbook workbook = new Workbook("Products.xlsx");
// Adicione uma planilha chamada Summary_sheet
Worksheet summarySheet = workbook.Worksheets.Add("Summary_sheet");
// Iterar sobre planilhas de origem cujos dados você deseja copiar para o
// planilha resumo
string[] nameOfSourceWorksheets = { "Products1", "Products2", "Products3" };
int totalRowCount = 0;
foreach (string sheetName in nameOfSourceWorksheets)
{
Worksheet sourceSheet = workbook.Worksheets[sheetName];
Range sourceRange;
Range destRange;
// No caso da planilha Produtos1, inclua todas as linhas e colunas.
if (sheetName.Equals("Products1"))
{
sourceRange = sourceSheet.Cells.MaxDisplayRange;
destRange = summarySheet.Cells.CreateRange(
sourceRange.FirstRow + totalRowCount,
sourceRange.FirstColumn,
sourceRange.RowCount,
sourceRange.ColumnCount);
}
// No caso de planilhas de Produtos2 e Produtos3,
// exclua a primeira linha (que contém títulos).
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 dados, formatação, objetos de desenho etc. de um
// intervalo de origem ao intervalo de destino.
destRange.Copy(sourceRange);
totalRowCount = sourceRange.RowCount + totalRowCount;
}
// Salve a pasta de trabalho
workbook.Save("Summarized.xlsx");
Conclusão
Neste artigo, você aprendeu como combinar programaticamente vários arquivos do Excel em um. Você pode copiar todas as planilhas de um arquivo de origem ou as específicas para o arquivo de destino. Você também aprendeu como combinar dados de várias planilhas em uma planilha. Por favor, verifique a documentação do Aspose.Cells para .NET para mais informações. Se você tiver alguma dúvida, sinta-se à vontade para perguntar em nosso Fórum de Suporte. Vamos respondê-los em algumas horas.