Arbeiten mit Zellen und dem Datenmodell

Arbeiten mit Zellen und dem Datenmodell

Arbeiten mit Zellen und dem Datenmodell

Die Klasse Cell ist die primäre Schnittstelle zum Lesen und Schreiben einzelner Tabellenblatt-Zellwerte, Formeln und Stile. Greifen Sie über die Cells-Sammlung des Arbeitsblatts mit einem Adressstring auf eine Zelle zu.


Werte in Zellen schreiben

Verwenden Sie Cell::PutValue, um Text, Zahlen, Boolesche Werte oder Datumsangaben in eine Zelle zu schreiben:

#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;
}

Formeln festlegen

Verwenden Sie Cell::SetFormula(formula), um eine Excel-kompatible Formel zu schreiben. Formeln werden von Excel oder kompatiblen Lesern ausgewertet, wenn die Datei geöffnet wird.

sheet.GetCells()["B4"].SetFormula("=SUM(B2:B3)");
sheet.GetCells()["C4"].SetFormula("=AVERAGE(B2:B3)");

Zellwerte lesen

Lese den aktuellen Wert einer Zelle mit Cell::GetValue(), das ein CellValue-Objekt zurückgibt. Konvertiere zu einem bestimmten Typ mit dem entsprechenden Accessor:

CellValue val = sheet.GetCells()["B2"].GetValue();
double price = val.AsDouble();
std::string text = sheet.GetCells()["A2"].GetStringValue();

Die CellValue-Klasse stellt typisierte Accessoren bereit:

MethodeRückgabetyp
AsDouble()double
AsInteger()int
AsBool()bool
AsString()std::string
AsDateTime()DateTime

Zugriff auf Zellen nach Zeile und Spalte

Neben Adress-Strings können Sie Zellen über nullbasierte Zeilen- und Spaltenindizes ansprechen:

// Address string
Cell& cellA1 = sheet.GetCells()["A1"];

// Row/column index (0-based)
int row = cellA1.GetRow();
int col = cellA1.GetColumn();

Zellen zusammenführen

Verwende Cells::Merge, um einen rechteckigen Zellbereich zu einer einzigen Zelle zusammenzuführen:

CellArea area = CellArea::CreateCellArea("A1", "C1");
sheet.GetCells().Merge(area.StartRow, area.StartColumn,
                       area.EndRow - area.StartRow + 1,
                       area.EndColumn - area.StartColumn + 1);

Abrufen des Anzeigetextes

Um den Zellenwert als formatierten Anzeigetext (unter Anwendung von Zahlenformaten) zu erhalten, verwende Cell::GetDisplayStringValue():

std::string display = sheet.GetCells()["B2"].GetDisplayStringValue();

Tipps und bewährte Vorgehensweisen

  • Bevorzuge PutValue gegenüber SetValue für direkte Literalzuweisungen — PutValue hat Überladungen für alle primitiven Typen.
  • Verwende GetStringValue(), um Text ohne Typkonvertierung abzurufen; verwende GetValue().AsDouble(), wenn du numerische Präzision benötigst.
  • Rufe immer SetFormula für Formelfeldzellen auf, nicht PutValue("=SUM(...)") — Letzteres speichert ein String-Literal, nicht eine Formel.
  • Verwende CellArea::CreateCellArea(start, end), um Bereichsobjekte für Zusammenführungs- und Formatierungsoperationen zu erstellen.

Häufige Probleme

ProblemUrsacheLösung
GetValue() gibt leer zurückZelle wurde nicht geschriebenSchreibe einen Wert mit PutValue bevor du liest
Formel nicht ausgewertetFormel als Zeichenkette gespeichertVerwenden Sie SetFormula(expr) anstelle von PutValue(expr)
Zusammenführen schlägt fehlUngültige BereichsdimensionenStellen Sie sicher, dass endRow >= startRow und endColumn >= startColumn
Typenkonflikt beim LesenFalsche As*()-Methode aufrufenOrdnen Sie den Accessor dem ursprünglichen PutValue-Typ zu

API Reference Zusammenfassung

Klasse/MethodeBeschreibung
Cell::PutValue(value)Schreiben Sie einen Literalwert in die Zelle
Cell::SetFormula(formula)Setzt einen Excel-Formel-String
Cell::GetValue()Rufen Sie den Zellenwert als CellValue ab
Cell::GetStringValue()Rufen Sie den Zellenwert als Zeichenkette ab
Cell::GetDisplayStringValue()Rufen Sie die formatierte Anzeigekette ab
Cell::GetRow()Ruft den nullbasierten Zeilenindex ab
Cell::GetColumn()Gibt den nullbasierten Spaltenindex zurück
Cell::GetStyle()Ruft den aktuellen Zellenstil ab
Cell::SetStyle(style)Wenden Sie einen modifizierten Stil auf die Zelle an
CellValue::AsDouble()Zellenwert in double konvertieren
CellValue::AsString()Zellenwert in String konvertieren
Cells::Merge(row, col, rows, cols)Einen rechteckigen Bereich zusammenführen

Siehe auch

 Deutsch