ombine vários arquivos do Excel em um usando Java

Você tem várias pastas de trabalho do Excel e deseja combiná-las em um arquivo para relatórios ou para manter os dados em um só lugar. Como desenvolvedor Java, você pode facilmente mesclar vários arquivos do Excel em um arquivo programaticamente. Neste artigo, você aprenderá como combinar vários arquivos do Excel em um usando Java.

Os seguintes tópicos são discutidos/abordados neste artigo:

API Java para mesclar arquivos do Excel

Para mesclar vários arquivos Excel, usarei Aspose.Cells for Java API. Esta API permite criar, manipular, converter, proteger ou imprimir planilhas sem depender do Microsoft Excel. Ele permite que você execute recursos de automação do Excel programaticamente em seus aplicativos Java.

Você pode baixar o JAR da API ou simplesmente adicionar a seguinte configuração pom.xml em seu aplicativo Java baseado em Maven para experimentar os exemplos de código mencionados abaixo.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-cells</artifactId>
    <version>21.8</version>
</dependency>

Combine vários arquivos do Excel em um usando Java

Você pode combinar facilmente vários arquivos do Excel em um único arquivo programaticamente seguindo as etapas mencionadas abaixo:

  • Crie uma instância da classe Workbook com o primeiro arquivo de origem
  • Crie uma instância da classe Workbook com o segundo arquivo de origem
  • Repita a etapa acima para combinar mais de dois arquivos
  • Chame o método combine() com a segunda instância do arquivo de origem
  • Repita a etapa acima para todos os arquivos de origem, um por um
  • Salve o arquivo de saída chamando o método save() da classe Workbook

O exemplo de código a seguir mostra como combinar vários arquivos do Excel em um arquivo usando Java.

// Abra o primeiro arquivo do Excel.
Workbook SourceBook1 = new Workbook("C:\\Files\\Quarter_1.xlsx");

// Abra o segundo arquivo do Excel.
Workbook SourceBook2 = new Workbook("C:\\Files\\Quarter_2.xlsx");

// Abra o terceiro arquivo do Excel.
Workbook SourceBook3 = new Workbook("C:\\Files\\Quarter_3.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("C:\\Files\\CombinedFile.xlsx");
Combine vários arquivos do Excel em um usando Java

Combine vários arquivos do Excel em um usando Java

A classe Workbook da API é a classe principal usada para criar uma planilha do Excel. Ele permite que você abra e salve os arquivos nativos do Excel. Ele também fornece várias propriedades e métodos para trabalhar com planilhas do Excel. O método combine() dessa classe combina a pasta de trabalho atual com outro objeto Workbook. O método save() da classe Workbook salva o arquivo de saída no caminho de arquivo especificado.

Combine planilhas específicas de vários arquivos do Excel em um usando Java

Você pode combinar facilmente planilhas específicas de vários arquivos do Excel em um único arquivo programaticamente seguindo as etapas mencionadas abaixo:

  • Crie uma instância da classe Workbook para o arquivo de origem 1
  • Crie uma instância da classe Workbook para o arquivo de origem 2
  • Repita a etapa acima para combinar planilhas de mais de dois arquivos
  • Crie uma instância da classe Workbook para o arquivo de destino
  • Adicione planilha(s) usando o método add() da classe WorksheetCollection
  • Chame o método copy() para copiar a planilha especificada do arquivo de origem 1 para o arquivo de destino
  • Chame o método copy() para copiar a planilha especificada do arquivo de origem 2 para o arquivo de destino
  • Renomeie planilhas no arquivo de destino usando o método setName()
  • Salve o arquivo de destino chamando o método save() da classe Workbook

O exemplo de código a seguir mostra como combinar planilhas específicas de vários arquivos do Excel em um arquivo usando Java.

String sourceFile1 = "Quarter_1.xlsx";
String sourceFile2 = "Quarter_2.xlsx";

// Abra o primeiro arquivo do Excel.
Workbook excelA = new Workbook("C:\\Files\\" + sourceFile1);

// Abra o segundo arquivo do Excel.
Workbook excelB = new Workbook("C:\\Files\\" + sourceFile2);

// 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.getWorksheets().add();

// Copie a planilha Jan do primeiro arquivo do Excel para o arquivo de destino.
destWorkbook.getWorksheets().get(0).copy(excelA.getWorksheets().get("Jan"));

// Copie a planilha Jul do segundo arquivo do Excel para o arquivo de destino.
destWorkbook.getWorksheets().get(1).copy(excelB.getWorksheets().get("Jul"));

// Por padrão, os nomes das planilhas são "Sheet1" e "Sheet2", respectivamente.
// Vamos dar-lhes nomes significativos.
destWorkbook.getWorksheets().get(0).setName(sourceFile1 + " - Jan");
destWorkbook.getWorksheets().get(1).setName(sourceFile2 + " - Jul");

// Salve o arquivo de destino.
destWorkbook.save("C:\\Files\\CombinedSpecificSheetsInFile.xlsx");
Combine planilhas específicas de vários arquivos do Excel em um usando Java

Combine planilhas específicas de vários arquivos do Excel em um usando Java

O método de propriedade getWorksheets() da classe Workbook retorna uma coleção de todas as planilhas em uma Workbook. Você pode adicionar uma planilha à coleção de planilhas usando o método add().

A classe Worksheet desta API representa uma única planilha. Ele fornece várias propriedades e métodos para trabalhar com uma planilha. O método copy() desta classe copia conteúdo e formatos de outra planilha. A classe Worksheet também fornece métodos get() para obter uma planilha específica por seu índice ou por seu nome. O método de propriedade setName() define o nome da planilha.

Mesclar várias planilhas em uma planilha usando Java

Você pode facilmente mesclar várias planilhas de um arquivo do Excel em uma única planilha programaticamente seguindo as etapas mencionadas abaixo:

  • Crie uma instância da classe Workbook para o arquivo de origem
  • Adicione uma nova planilha usando o método add()
  • Itere sobre planilhas de origem e faça o seguinte:
    • crie um intervalo de células e colunas para uma planilha usando o método createRange()
    • Copie dados de um intervalo de origem para o intervalo de destino usando o método copy()
  • Salve o arquivo de saída chamando o método save() da classe Workbook

O exemplo de código a seguir mostra como mesclar várias planilhas em uma planilha usando Java.

// Abra um arquivo do Excel que contenha as planilhas:
// janeiro, fevereiro, março e abril
Workbook workbook = new Workbook("C:\\Files\\Quarter_1.xlsx");

// Adicione uma planilha chamada Summary_sheet
Worksheet summarySheet = workbook.getWorksheets().add("Summary_sheet");

// Iterar sobre planilhas de origem para copiar dados para o
// planilha resumo
String[] nameOfSourceWorksheets = { "Jan", "Feb", "Mar", "Apr" };
int totalRowCount = 0;

for (String sheetName : nameOfSourceWorksheets)
{
  // Obter planilha
    Worksheet sourceSheet = workbook.getWorksheets().get(sheetName);

    Range sourceRange = null;
    Range destRange = null;

    // No caso da planilha Jan, inclua todas as linhas e colunas.
    if (sheetName.equals("Jan"))
    {
        sourceRange = sourceSheet.getCells().getMaxDisplayRange();

        destRange = summarySheet.getCells().createRange(
                sourceRange.getFirstRow() + totalRowCount,
                sourceRange.getFirstColumn(),
                sourceRange.getRowCount(),
                sourceRange.getColumnCount());
    }
    // No caso de outras planilhas,
    // exclua a primeira linha (que contém títulos).
    else
    {
        int mdatarow = sourceSheet.getCells().getMaxDataRow(); // Zero-based
        int mdatacol = sourceSheet.getCells().getMaxDataColumn(); // Zero-based
        sourceRange = sourceSheet.getCells().createRange(0 + 1, 0, mdatarow, mdatacol + 1);

        destRange = summarySheet.getCells().createRange(
                sourceRange.getFirstRow() + totalRowCount -1,
                sourceRange.getFirstColumn(),
                sourceRange.getRowCount(),
                sourceRange.getColumnCount());
    }

    // Copia dados, formatação, objetos de desenho etc. de um
    // intervalo de origem ao intervalo de destino.
    destRange.copy(sourceRange);
    totalRowCount = sourceRange.getRowCount() + totalRowCount;
}

// Salve a pasta de trabalho 
workbook.save("C:\\Files\\Summarized.xlsx");
Mesclar várias planilhas em uma planilha usando Java

Mesclar várias planilhas em uma planilha usando Java

O método de propriedade getCells() da classe Worksheet fornece a coleção de Células disponíveis na planilha. A classe Cells da API representa uma coleção de objetos relevantes para uma célula, como Cell, Row, etc. A propriedade getMaxDisplayRange() O método da classe Cells fornece o intervalo máximo que inclui dados, células mescladas e formas. A classe Range representa um intervalo de células em uma planilha.

A classe Cells fornece os seguintes métodos para criar um intervalo de células:

  • createRange(int firstIndex, int number, boolean isVertical) para criar um objeto Range a partir de linhas de células ou colunas de células.
  • createRange(int firstRow, int firstColumn, int totalRows, int totalColumns) para criar um objeto Range de um intervalo de células.
  • O método createRange(java.lang.String address) cria um objeto Range a partir de um endereço do intervalo.
  • O método createRange(java.lang.String upperLeftCell, java.lang.String lowerRightCell) cria um objeto Range a partir de um intervalo de células.

O método copy() da classe Range copia todos os tipos de dados (incluindo fórmulas), formatação, objetos de desenho, etc. de um intervalo de origem para o intervalo de destino.

Consolide colunas de várias planilhas em uma usando Java

Você pode facilmente mesclar colunas de várias planilhas em uma única planilha programaticamente seguindo as etapas mencionadas abaixo:

  • Crie uma instância da classe Workbook para o arquivo de origem
  • Adicione uma nova planilha usando o método add()
  • Itere sobre planilhas de origem e faça o seguinte:
    • Copie todas as colunas uma a uma usando o método copyColumn() com células de planilhas de origem e índice de coluna
  • Salve o arquivo de saída chamando o método save() da classe Workbook

O exemplo de código a seguir mostra como consolidar colunas de várias planilhas em uma planilha usando Java.

// Abra uma pasta de trabalho.
Workbook workbook = new Workbook("C:\\Files\\sample.xlsx");

// Adicione uma planilha chamada Summary_sheet
Worksheet summarySheet = workbook.getWorksheets().add("Summary_sheet");

// Iterar sobre planilhas para copiar colunas para o
// planilha resumo
String[] nameOfSourceWorksheets = { "Products", "Sales", "Customers" };
int totalCol = 0; 

for (String sheetName : nameOfSourceWorksheets) {
  Worksheet sourceSheet = workbook.getWorksheets().get(sheetName);

  if (sheetName.equals("Products")) {
    // Obter coleção de colunas da planilha
    ColumnCollection columns = sourceSheet.getCells().getColumns();

    // copiar coluna para summaySheet
    for (Column column : (Iterable<Column>) columns)
    {
      summarySheet.getCells().copyColumn(sourceSheet.getCells(), column.getIndex(), totalCol);
      totalCol = totalCol + 1;
    }
    }
  else {
    // Obter coleção de colunas da planilha
    ColumnCollection columns = sourceSheet.getCells().getColumns();

    // copiar coluna para summaySheet
    for (Column column : (Iterable<Column>) columns)
    {
      summarySheet.getCells().copyColumn(sourceSheet.getCells(), column.getIndex(), totalCol);
      totalCol = totalCol + 1;
    }
  }
}

// Salve o arquivo excel.
workbook.save("C:\\Files\\CopyingColumns_out.xlsx");
Consolide colunas de várias planilhas em uma usando Java

Consolide colunas de várias planilhas em uma usando Java

O método de propriedade getColumns() da classe Cells fornece a coleção das colunas disponíveis na planilha. A classe ColumnCollection representa a coleção de colunas individuais em uma planilha, enquanto a classe Column representa uma única coluna em uma planilha.

O método copyColumn() da classe Cells copia os dados e formatos de uma coluna inteira. A classe Cells também fornece métodos copyColumn() sobrecarregados para copiar dados com PasteOptions, número da coluna, colunas totais de origem e destino, etc.

Obtenha uma licença gratuita

Você pode experimentar a API sem limitações de avaliação solicitando uma licença temporária gratuita.

Conclusão

Neste artigo, você aprendeu como combinar vários arquivos do Excel em um arquivo. Você também aprendeu a combinar planilhas específicas de vários arquivos do Excel usando Java. Além disso, você aprendeu a mesclar várias planilhas em uma única planilha programaticamente. Este artigo também explicou como consolidar colunas de várias planilhas em uma usando Java. Você pode aprender mais sobre Aspose.Cells para API Java usando a documentação. Em caso de qualquer ambiguidade, não hesite em contactar-nos no fórum.

Veja também