Werken met Cells en het Data Model
Werken met cellen en het gegevensmodel
De Cell klasse is de primaire interface voor het lezen en schrijven van individuele spreadsheetcelwaarden, formules en stijlen. Toegang tot een cel krijg je via de Cells collectie van het werkblad met behulp van een adresreeks.
Waarden naar cellen schrijven
Gebruik Cell::PutValue om tekst, getallen, booleans of datums naar een cel te schrijven:
#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"
using namespace Aspose::Cells_FOSS;
int main() {
Workbook workbook;
Worksheet& sheet = workbook.GetWorksheets()[0];
sheet.GetCells()["A1"].PutValue("Product");
sheet.GetCells()["B1"].PutValue("Price");
sheet.GetCells()["A2"].PutValue("Widget");
sheet.GetCells()["B2"].PutValue(9.99);
sheet.GetCells()["C2"].PutValue(true);
workbook.Save("data.xlsx");
return 0;
}Formules instellen
Gebruik Cell::SetFormula(formula) om een Excel-compatibele formule te schrijven. Formules worden geëvalueerd door Excel of compatibele lezers wanneer het bestand wordt geopend.
sheet.GetCells()["B4"].SetFormula("=SUM(B2:B3)");
sheet.GetCells()["C4"].SetFormula("=AVERAGE(B2:B3)");Celwaarden lezen
Lees de huidige waarde van een cel met Cell::GetValue(), die een CellValue object teruggeeft. Converteer naar een specifiek type met de juiste accessor:
CellValue val = sheet.GetCells()["B2"].GetValue();
double price = val.AsDouble();
std::string text = sheet.GetCells()["A2"].GetStringValue();De CellValue klasse biedt getypeerde accessors:
| Methode | Retourtype |
|---|---|
AsDouble() | double |
AsInteger() | int |
AsBool() | bool |
AsString() | std::string |
AsDateTime() | DateTime |
Cellen benaderen op rij en kolom
Naast adresstrings kun je cellen benaderen met nul-gebaseerde rij- en kolomindices:
// Address string
Cell& cellA1 = sheet.GetCells()["A1"];
// Row/column index (0-based)
int row = cellA1.GetRow();
int col = cellA1.GetColumn();Cellen samenvoegen
Gebruik Cells::Merge om een rechthoekig bereik van cellen tot één cel samen te voegen:
CellArea area = CellArea::CreateCellArea("A1", "C1");
sheet.GetCells().Merge(area.StartRow, area.StartColumn,
area.EndRow - area.StartRow + 1,
area.EndColumn - area.StartColumn + 1);Weergavetekst ophalen
Om de celwaarde op te halen als opgemaakte weergavetekst (toepassing van getalformaten), gebruik je Cell::GetDisplayStringValue():
std::string display = sheet.GetCells()["B2"].GetDisplayStringValue();Tips en Best Practices
- Geef de voorkeur aan
PutValuebovenSetValuevoor directe letterlijke toewijzingen —PutValueheeft overloads voor alle primitieve types. - Gebruik
GetStringValue()om tekst op te halen zonder typeconversie; gebruikGetValue().AsDouble()wanneer je numerieke precisie nodig hebt. - Roep altijd
SetFormulaaan voor formulecellen, nietPutValue("=SUM(...)")— de laatste slaat een stringliteral op, geen formule. - Gebruik
CellArea::CreateCellArea(start, end)om bereikobjecten te bouwen voor samenvoeg- en opmaakbewerkingen.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
GetValue() retourneert leeg | Cel is niet geschreven | Schrijf een waarde met PutValue voordat je leest |
| Formule niet geëvalueerd | Formule opgeslagen als string | Gebruik SetFormula(expr) in plaats van PutValue(expr) |
| Samenvoegen mislukt | Ongeldige bereikafmetingen | Zorg ervoor dat endRow >= startRow en endColumn >= startColumn |
| Type-mismatch bij lezen | Verkeerde As*()-methode aanroepen | Koppel de accessor aan het oorspronkelijke PutValue-type |
API Reference Samenvatting
| Klasse/Methode | Beschrijving |
|---|---|
Cell::PutValue(value) | Schrijf een letterlijke waarde naar de cel |
Cell::SetFormula(formula) | Stel een Excel-formuletekenreeks in |
Cell::GetValue() | Haal de celwaarde op als een CellValue |
Cell::GetStringValue() | Haal de celwaarde op als een string |
Cell::GetDisplayStringValue() | Haal de geformatteerde weergave-string op |
Cell::GetRow() | Haal de nulgebaseerde rij-index op |
Cell::GetColumn() | Haal de nulgebaseerde kolomindex op |
Cell::GetStyle() | Haal de huidige celstijl op |
Cell::SetStyle(style) | Pas een gewijzigde stijl toe op de cel |
CellValue::AsDouble() | Converteer celwaarde naar double |
CellValue::AsString() | Converteer celwaarde naar string |
Cells::Merge(row, col, rows, cols) | Voeg een rechthoekig bereik samen |