Trabalhar com a gestão de planilhas

Trabalhar com a gestão de planilhas

Trabalhar com a gestão de planilhas

Este guia mostra como criar, carregar, modificar e salvar quadros de trabalho do Excel usando Aspose.Cells FOSS para Java . Você aprenderá a trabalhar com o Workbook, WorksheetCollection, Worksheet, Cells, e Cell classes para gestão de planilhas de ponta a ponto.


Criar um novo livro de trabalho

Use o constructor sem argumentos para criar um livro vazio. Uma única folha de trabalho em branco nomeado Sheet1 é adicionado automaticamente.

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.WorksheetCollection;
import com.aspose.cells.foss.Worksheet;

Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Worksheet sheet = sheets.get(0);
System.out.println("Sheet name: " + sheet.getName()); // Sheet1

Carregar um livro de trabalho a partir de um arquivo

Passe um caminho de arquivo para o Workbook(fileName) constructor para abrir um existente .xlsx ou a) .ods Arquivo. Workbook(fileName, options) fornecer LoadOptions Quando precisares . para controlar a detecção de formatos ou o tratamento das senhas.

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.LoadOptions;

// Simple load
Workbook workbook = new Workbook("data/report.xlsx");

// Load with explicit options
LoadOptions opts = new LoadOptions();
Workbook workbookWithOpts = new Workbook("data/report.xlsx", opts);

Carregamento de um livro a partir de uma corrente

Workbook(stream) e a) Workbook(stream, options) aceitar qualquer java.io.InputStream. Isto é útil quando o arquivo vem de um recurso de rede, uma base de dados BLOB ou um Array de bytes em memória.

import com.aspose.cells.foss.Workbook;
import java.io.FileInputStream;
import java.io.InputStream;

try (InputStream is = new FileInputStream("data/template.xlsx")) {
    Workbook workbook = new Workbook(is);
    System.out.println("Worksheets: " + workbook.getWorksheets().getCount());
}

Acesso e gestão de folhas de trabalho

Workbook.getWorksheets() retorna um WorksheetCollection.Recolher folhas por índice ou por nome, iterar em todas as folhas e adicionar ou remover follas conforme necessário.

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.WorksheetCollection;
import com.aspose.cells.foss.Worksheet;

Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();

// Access by index
Worksheet first = sheets.get(0);
System.out.println(first.getName()); // Sheet1

// Add a named sheet
int idx = sheets.add("Summary");
Worksheet summary = sheets.get(idx);
summary.setName("Summary");

// Iterate all sheets
for (Worksheet ws : sheets) {
    System.out.println("Sheet: " + ws.getName());
}

// Remove a sheet by name
sheets.removeAt("Sheet1");
System.out.println("Remaining sheets: " + sheets.getCount());

Leitura e escrita de valores das células

Navegue para uma célula usando: Worksheet.getCells(), que retorna um valor de Cells coleção. Obter uma Cell por nome (por exemplo:. "A1") ou por índice de linha/coluna baseado em zero. putValue() para escrever valores primitivos e getValue() / getStringValue() para ler. - Não, não.

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.Worksheet;
import com.aspose.cells.foss.Cells;
import com.aspose.cells.foss.Cell;

Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Worksheet sheet = sheets.get(0);
Cells cells = sheet.getCells();

// Write values
cells.get("A1").putValue("Product");
cells.get("B1").putValue("Units Sold");

// Write by row/column index (0-based)
Cell a2 = cells.get(1, 0);
a2.putValue("Widget A");

Cell b2 = cells.get(1, 1);
b2.putValue(1200);

// Read back
System.out.println(a2.getStringValue()); // Widget A
System.out.println(b2.getValue());       // 1200

Configuração de fórmulas de célula

Atribuir uma sequência de fórmulas a uma célula via setFormula().Aspose.Cells avalia fórmulas quando a pasta de trabalho é guardada ou se o cálculo for activado explicitamente.

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.Cells;
import com.aspose.cells.foss.Cell;

Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Cells cells = sheets.get(0).getCells();

cells.get("A1").putValue(100);
cells.get("A2").putValue(200);

Cell a3 = cells.get("A3");
a3.setFormula("=SUM(A1:A2)");
System.out.println("Formula: " + a3.getFormula()); // =SUM(A1:A2)

Salvar um livro de trabalho

Utilização: Workbook.save(fileName) para escrever o livro de trabalho no disco. O formato de saída é Determinado pela extensão de ficheiro; uso .xlsx para quadros de trabalho do Excel.

import com.aspose.cells.foss.Workbook;

Workbook workbook = new Workbook();
workbook.getWorksheets().get(0).getCells().get("A1").putValue("Hello");

// Save to file -- format inferred from .xlsx extension
workbook.save("output/result.xlsx");

Libertação de Recursos

Workbook instrumentos de trabalho AutoCloseable.Utilizam um bloco de tentativa com recursos para assegurar a Os recursos internos da pasta de trabalho são liberados imediatamente após a utilização.

import com.aspose.cells.foss.Workbook;

try (Workbook workbook = new Workbook("data/large.xlsx")) {
    workbook.save("output/large_modified.xlsx");
}
// workbook.close() called automatically

Dicas e melhores práticas

  • Sempre utilizar recursos de tentativa (try (Workbook wb = new Workbook(...))) para grandes empresas Arquivos para evitar manter os manobras de ficheiros abertos.
  • Preferência cells.get(row, column) mais uma vez . cells.get(cellName) em laços quentes; o sobrecarga de inteiros evita a análise repetida do nome da célula.
  • Chama-me . workbook.getWorksheets().getCount() antes de aceder às folhas por índice para evitar que os dados sejam enviados a outros países. IndexOutOfBoundsException.
  • Nomear os seus folhetos explicitamente com: setName() após o add() Assim, o código a jusante pode: Procure-os pelo nome, em vez de por índice frágil.
  • Não dependa dos resultados da fórmula imediatamente após a administração. setFormula(); salvo primeiro ou Recarregar se precisar de valores calculados na mesma sessão.

Problemas comuns

EmissãoCausa da morteCorreção
WorkbookLoadException em 1 de Setembro de new Workbook(fileName)Percurso de arquivo incorreto ou arquivos bloqueados .Verifique se o caminho existe e é legível; feche outras aplicações que contenham o arquivo.
get(index) lança IndexOutOfBoundsExceptionÍndice da folha para além do seguinte: getCount() - 1Verificação sheets.getCount() antes de aceder; utilizar add() para criar uma nova folha
Celular de fórmula retorna vazio getValue()Formulas não calculadas automaticamente na memóriaSalve o livro e recarregue-o para obter resultados de fórmulas .
O ficheiro de saída está corrompido após a save()Extensão de arquivo incorretaCertifique-se de que o nome do ficheiro termina com: .xlsx; o formato é inferido da extensão

FAQ

Como renomeio uma folha de cálculo?

Recuperar o Worksheet Objeto por índice a partir de: WorksheetCollection E chama-me. setName(name) com o novo nome de exibição:

workbook.getWorksheets().get(0).setName("Sales Data");

Como posso verificar quantas folhas um livro tem?

Chama-me . getCount() sobre o WorksheetCollection devolvido por: Workbook.getWorksheets() para obter o número total de folhas:

int count = workbook.getWorksheets().getCount();

Posso adicionar várias folhas numa chamada?

Não, liga. worksheets.add(sheetName) Cada chamada retorna o índice do sistema de informação. folha recém-criada.

Como verifico o tipo de um valor da célula?

Recuperar o Cell nome e designação getType(), que retorna um valor de CellValueType valor enum:

Cell cell = cells.get("A1");
System.out.println(cell.getType()); // CellValueType enum value

Resumo de referência da API

Classe / MétodoDescrição:
Workbook()Cria uma pasta de trabalho vazia com uma folha em branco .
Workbook(fileName)Carregar uma pasta de trabalho a partir de um caminho de arquivo .
Workbook(stream)Carrega um livro de trabalho a partir de uma InputStream
Workbook(fileName, options)Carrega um livro com: LoadOptions
Workbook.getWorksheets()Retorna o número de dados: WorksheetCollection
Workbook.save(fileName)Salva para um ficheiro (formato inferido da extensão)
Workbook.save(stream, format)Salva para um fluxo com explícito SaveFormat
WorksheetCollection.get(index)Folha de devoluções por índice baseado em zero
WorksheetCollection.get(name)Folha de devoluções por nome
WorksheetCollection.add(sheetName)Adiciona uma folha com nome; retorna o seu índice
WorksheetCollection.getCount()Número de folhas no livro de trabalho
WorksheetCollection.removeAt(sheetName)Remover uma folha por nome
Worksheet.getCells()Retorna o número de dados: Cells Coleção para esta ficha
Worksheet.getName() / setName()Obter ou definir o nome da guia de folha
Cells.get(cellName)Retorna a Cell por nome (por exemplo, “A1”)
Cells.get(row, column)Retorna a Cell Por linha/coluna com base em zero
Cell.putValue(value)Escreve um valor na célula.
Cell.getValue()Leia o valor da célula como: Object
Cell.getStringValue()Leia o valor da célula como um String
Cell.setFormula(formula)Defina uma sequência de fórmulas (por exemplo, “=SUM(A1:A2)”)
LoadOptionsConfiguração para carregamento do livro de trabalho
SaveFormatEnum de constantes do formato (o formato é inferido da extensão do arquivo; não passado para o save())

Ver também:

 Português