Praca z komórkami i modelem danych

Praca z komórkami i modelem danych

Praca z komórkami i modelem danych

Klasa Cell jest głównym interfejsem do odczytu i zapisu pojedynczych wartości komórek arkusza kalkulacyjnego, formuł i stylów. Dostęp do komórki można uzyskać poprzez kolekcję Cells arkusza przy użyciu ciągu adresowego.


Zapisywanie wartości do komórek

Użyj Cell::PutValue do zapisu tekstu, liczb, wartości logicznych lub dat do komórki:

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

Ustawianie formuł

Użyj Cell::SetFormula(formula) do zapisania formuły kompatybilnej z Excelem. Formuły są obliczane przez Excel lub kompatybilne czytniki po otwarciu pliku.

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

Odczytywanie wartości komórek

Odczytaj bieżącą wartość komórki przy użyciu Cell::GetValue(), co zwraca obiekt CellValue. Konwertuj na konkretny typ za pomocą odpowiedniego akcesora:

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

Klasa CellValue udostępnia typowane akcesory:

MetodaTyp zwracany
AsDouble()double
AsInteger()int
AsBool()bool
AsString()std::string
AsDateTime()DateTime

Dostęp do komórek według wiersza i kolumny

Oprócz ciągów adresowych, uzyskaj dostęp do komórek za pomocą indeksów wiersza i kolumny zaczynających się od zera:

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

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

Scalanie komórek

Użyj Cells::Merge, aby scalić prostokątny zakres komórek w jedną:

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

Uzyskiwanie tekstu wyświetlanego

Aby pobrać wartość komórki jako sformatowany tekst wyświetlany (z zastosowaniem formatów liczbowych), użyj Cell::GetDisplayStringValue():

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

Wskazówki i najlepsze praktyki

  • Preferuj PutValue zamiast SetValue przy bezpośrednich przypisaniach literałów — PutValue ma przeciążenia dla wszystkich typów prymitywnych.
  • Użyj GetStringValue() do pobierania tekstu bez konwersji typu; użyj GetValue().AsDouble(), gdy potrzebna jest precyzja liczby.
  • Zawsze wywołuj SetFormula dla komórek z formułą, nie PutValue("=SUM(...)") — ta druga przechowuje literał łańcucha, a nie formułę.
  • Użyj CellArea::CreateCellArea(start, end) do tworzenia obiektów zakresu dla operacji scalania i formatowania.

Typowe problemy

ProblemPrzyczynaNaprawa
GetValue() zwraca pustąKomórka nie została zapisanaZapisz wartość przy użyciu PutValue przed odczytem
Formuła nie została ocenionaFormuła zapisana jako ciąg znakówUżyj SetFormula(expr) zamiast PutValue(expr)
Scalanie nie powiodło sięNieprawidłowe wymiary zakresuUpewnij się, że endRow >= startRow i endColumn >= startColumn
Nieprawidłowość typów przy odczycieWywoływanie niewłaściwej metody As*()Dopasuj akcesor do oryginalnego typu PutValue

API Reference Podsumowanie

Klasa/MetodaOpis
Cell::PutValue(value)Zapisz wartość literalną do komórki
Cell::SetFormula(formula)Ustaw ciąg formuły Excel
Cell::GetValue()Pobierz wartość komórki jako CellValue
Cell::GetStringValue()Pobierz wartość komórki jako ciąg znaków
Cell::GetDisplayStringValue()Pobierz sformatowany ciąg wyświetlania
Cell::GetRow()Pobierz indeks wiersza liczony od zera
Cell::GetColumn()Pobierz indeks kolumny zaczynający się od zera
Cell::GetStyle()Pobierz bieżący styl komórki
Cell::SetStyle(style)Zastosuj zmodyfikowany styl do komórki
CellValue::AsDouble()Konwertuj wartość komórki na typ double
CellValue::AsString()Konwertuj wartość komórki na typ string
Cells::Merge(row, col, rows, cols)Scali prostokątny zakres

Zobacz także

 Polski