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()); // Sheet1Een 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()); // 1200Celformules 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 automaticallyTips 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)bovencells.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 omIndexOutOfBoundsExceptionte voorkomen. - Naam je bladen expliciet met
setName()naadd()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
| Probleem | Oorzaak | Oplossing |
|---|---|---|
WorkbookLoadException op new Workbook(fileName) | Bestandspad onjuist of bestand vergrendeld | Controleer of het pad bestaat en leesbaar is; sluit andere applicaties die het bestand vasthouden |
get(index) gooit IndexOutOfBoundsException | Bladindex buiten getCount() - 1 | Controleer sheets.getCount() voordat u toegang krijgt; gebruik add() om een nieuw blad te maken |
Formulecel geeft lege getValue() terug | Formules worden niet automatisch in het geheugen berekend | Sla de werkmap op en laad deze opnieuw om de formule-resultaten te verkrijgen |
Uitvoerbestand is corrupt na save() | Verkeerde bestandsextensie | Zorg 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 valueAPI Reference Samenvatting
| Klasse / Methode | Beschrijving |
|---|---|
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)”) |
LoadOptions | Configuratie voor het laden van een werkmap |
SaveFormat | Enum van formaatconstanten (formaat wordt afgeleid van bestandsextensie; niet doorgegeven aan save()) |