Werken met Spreadsheetbeheer

Werken met Spreadsheetbeheer

Werken met spreadsheetbeheer

Deze gids laat zien hoe u Excel-werkboeken kunt maken, laden, wijzigen en opslaan met Aspose.Cells FOSS voor Java. U leert hoe u kunt werken met de Workbook, WorksheetCollection, Worksheet, Cells en Cell klassen voor end-to-end spreadsheetbeheer.


Een nieuw werkboek maken

Gebruik de constructor zonder argumenten om een leeg werkboek te maken. Een enkele lege werkblad met de naam Sheet1 wordt automatisch toegevoegd.

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

Een werkboek laden vanaf een bestand

Geef een bestandspad door aan de Workbook(fileName) constructor om een bestaand .xlsx of .ods bestand te openen. Gebruik Workbook(fileName, options) om LoadOptions te leveren wanneer u de formatdetectie of wachtwoordafhandeling wilt controleren.

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);

Een werkboek laden vanaf een stream

Workbook(stream) en Workbook(stream, options) accepteren elke java.io.InputStream. Dit is nuttig wanneer het bestand afkomstig is van een netwerkbron, een database-BLOB, of een in-memory byte-array.

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());
}

Toegang tot en beheer van werkbladen

Workbook.getWorksheets() retourneert een WorksheetCollection. Haal werkbladen op op basis van index of naam, doorloop alle werkbladen, en voeg werkbladen toe of verwijder ze indien nodig.

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());

Celwaarden lezen en schrijven

Navigeer naar een cel met behulp van Worksheet.getCells(), die een Cells collectie retourneert. Haal een Cell op op naam (bijv. "A1") of op basis van een nulgebaseerde rij-/kolomindex. Gebruik putValue() om primitieve waarden te schrijven en getValue() / getStringValue() om ze terug te lezen.

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

Celformules instellen

Ken een formule-tekenreeks toe aan een cel via setFormula(). Aspose.Cells evalueert formules wanneer het werkboek wordt opgeslagen of wanneer de berekening expliciet wordt gestart.

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)

Een werkboek opslaan

Gebruik Workbook.save(fileName) om de werkmap naar schijf te schrijven. Het uitvoerformaat wordt bepaald door de bestandsextensie; gebruik .xlsx voor Excel-werkmappen.

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");

Resources vrijgeven

Workbook implementeert AutoCloseable. Gebruik een try-with-resources-blok om ervoor te zorgen dat de interne resources van de werkmap direct na gebruik worden vrijgegeven.

import com.aspose.cells.foss.Workbook;

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

Tips en best practices

  • Gebruik altijd try-with-resources (try (Workbook wb = new Workbook(...))) voor grote bestanden om te voorkomen dat bestands-handles open blijven.
  • Geef de voorkeur aan cells.get(row, column) boven cells.get(cellName) in kritieke lussen; de integer-overload voorkomt herhaalde parsing van cel-namen.
  • Roep workbook.getWorksheets().getCount() aan voordat je bladen op index benadert om IndexOutOfBoundsException te voorkomen.
  • Naam je bladen expliciet met setName() na add() zodat downstream-code ze kan opzoeken op naam in plaats van op een fragiele index.
  • Vertrouw niet meteen op formule-resultaten direct na setFormula(); sla eerst op of herlaad als je berekende waarden in dezelfde sessie nodig hebt.

Veelvoorkomende problemen

ProbleemOorzaakOplossing
WorkbookLoadException op new Workbook(fileName)Bestandspad onjuist of bestand vergrendeldControleer of het pad bestaat en leesbaar is; sluit andere applicaties die het bestand vasthouden
get(index) gooit IndexOutOfBoundsExceptionBladindex buiten getCount() - 1Controleer sheets.getCount() voordat u toegang krijgt; gebruik add() om een nieuw blad te maken
Formulecel geeft lege getValue() terugFormules worden niet automatisch in het geheugen berekendSla de werkmap op en laad deze opnieuw om de formule-resultaten te verkrijgen
Uitvoerbestand is corrupt na save()Verkeerde bestandsextensieZorg ervoor dat de bestandsnaam eindigt op .xlsx; het formaat wordt afgeleid van de extensie

FAQ

Hoe hernoem ik een werkblad?

Haal het Worksheet object op via index uit WorksheetCollection en roep setName(name) aan met de nieuwe weergavenaam:

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

Hoe controleer ik hoeveel werkbladen een werkmap heeft?

Roep getCount() aan op de WorksheetCollection die door Workbook.getWorksheets() wordt geretourneerd om het totale aantal werkbladen te krijgen:

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

Kan ik meerdere werkbladen in één oproep toevoegen?

Nee. Roep worksheets.add(sheetName) één keer per sheet aan. Elke oproep retourneert de index van het nieuw aangemaakte sheet.

Hoe controleer ik het type van een celwaarde?

Haal de Cell op naam op en roep getType() aan, die een CellValueType enum-waarde retourneert:

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

API Reference Samenvatting

Klasse / MethodeBeschrijving
Workbook()Maakt een lege werkmap met één leeg blad
Workbook(fileName)Laadt een werkmap van een bestandspad
Workbook(stream)Laadt een werkmap van een InputStream
Workbook(fileName, options)Laadt een werkmap met LoadOptions
Workbook.getWorksheets()Retourneert de WorksheetCollection
Workbook.save(fileName)Slaat op naar een bestand (formaat afgeleid van extensie)
Workbook.save(stream, format)Slaat op naar een stream met expliciete SaveFormat
WorksheetCollection.get(index)Retourneert blad op nul-gebaseerde index
WorksheetCollection.get(name)Retourneert blad op naam
WorksheetCollection.add(sheetName)Voegt een benoemd blad toe; retourneert de index
WorksheetCollection.getCount()Aantal bladen in het werkboek
WorksheetCollection.removeAt(sheetName)Verwijdert een blad op naam
Worksheet.getCells()Retourneert de Cells collectie voor dit blad
Worksheet.getName() / setName()Haalt op of stelt de naam van het werkbladtabblad in
Cells.get(cellName)Retourneert een Cell op naam (bijv. “A1”)
Cells.get(row, column)Retourneert een Cell op basis van een nulgebaseerde rij/kolom
Cell.putValue(value)Schrijft een waarde naar de cel
Cell.getValue()Leest de celwaarde als Object
Cell.getStringValue()Leest de celwaarde als een String
Cell.setFormula(formula)Stelt een formule-string in (bijv. “=SUM(A1:A2)”)
LoadOptionsConfiguratie voor het laden van een werkmap
SaveFormatEnum van formaatconstanten (formaat wordt afgeleid van bestandsextensie; niet doorgegeven aan save())

Zie ook

 Nederlands