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()); // Sheet1Carregar 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()); // 1200Configuraçã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 automaticallyDicas 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 oadd()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ão | Causa da morte | Correçã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() - 1 | Verificaçã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ória | Salve 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 incorreta | Certifique-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 valueResumo de referência da API
| Classe / Método | Descriçã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)”) |
LoadOptions | Configuração para carregamento do livro de trabalho |
SaveFormat | Enum de constantes do formato (o formato é inferido da extensão do arquivo; não passado para o save()) |