Práce s buňkami a datovým modelem

Práce s buňkami a datovým modelem

Práce s buňkami a datovým modelem

Třída Cell je hlavním rozhraním pro čtení a zápis jednotlivých hodnot buněk, vzorců a stylů v tabulce. Přístup k buňce lze získat přes kolekci Cells listu pomocí řetězce adresy.


Zápis hodnot do buněk

Použijte Cell::PutValue k zápisu textu, čísel, logických hodnot nebo datumů do buňky:

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

Nastavení vzorců

Použijte Cell::SetFormula(formula) k zápisu Excel-kompatibilního vzorce. Vzorce jsou vyhodnoceny v Excelu nebo kompatibilními čtečkami při otevření souboru.

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

Čtení hodnot buněk

Přečtěte aktuální hodnotu buňky pomocí Cell::GetValue(), která vrací objekt CellValue. Převést na konkrétní typ pomocí příslušného accessoru:

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

Třída CellValue poskytuje typované accessory:

MetodaTyp vrácení
AsDouble()double
AsInteger()int
AsBool()bool
AsString()std::string
AsDateTime()DateTime

Přístup k buňkám podle řádku a sloupce

Kromě řetězcových adres můžete přistupovat k buňkám pomocí nulových indexů řádku a sloupce:

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

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

Sloučení buněk

Použijte Cells::Merge ke sloučení obdélníkového rozsahu buněk do jedné:

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

Získání zobrazovaného textu

Chcete-li získat hodnotu buňky jako formátovaný zobrazovací text (aplikací číselných formátů), použijte Cell::GetDisplayStringValue():

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

Tipy a osvědčené postupy

  • Upřednostněte PutValue před SetValue pro přímé přiřazení literálů — PutValue má přetížení pro všechny primitivní typy.
  • Použijte GetStringValue() k získání textu bez konverze typu; použijte GetValue().AsDouble(), když potřebujete číselnou přesnost.
  • Vždy volejte SetFormula pro buňky s formulí, ne PutValue("=SUM(...)") — druhý ukládá řetězcový literál, ne formuli.
  • Použijte CellArea::CreateCellArea(start, end) k vytvoření objektů rozsahu pro operace sloučení a formátování.

Běžné problémy

ProblémPříčinaOprava
GetValue() vrací prázdnýBuňka nebyla zapsánaZapište hodnotu pomocí PutValue před čtením
Vzorec nebyl vyhodnocenVzorec uložen jako řetězecPoužijte SetFormula(expr) místo PutValue(expr)
Sloučení selžeNeplatné rozměry rozsahuZajistěte endRow >= startRow a endColumn >= startColumn
Neshoda typů při čteníVolání nesprávné metody As*()Přiřaďte přístupový prvek k původnímu typu PutValue

API Reference souhrn

Třída/MetodaPopis:
Cell::PutValue(value)Zapište literální hodnotu do buňky
Cell::SetFormula(formula)Nastaví řetězec Excelové formule
Cell::GetValue()Získejte hodnotu buňky jako CellValue
Cell::GetStringValue()Získejte hodnotu buňky jako řetězec
Cell::GetDisplayStringValue()Získejte formátovaný řetězec pro zobrazení
Cell::GetRow()Získá index řádku založený na nule
Cell::GetColumn()Získá index sloupce počítaný od nuly
Cell::GetStyle()Získá aktuální styl buňky
Cell::SetStyle(style)Použijte upravený styl na buňku
CellValue::AsDouble()Převést hodnotu buňky na double
CellValue::AsString()Převést hodnotu buňky na string
Cells::Merge(row, col, rows, cols)Sloučit obdélníkový rozsah

Viz také:

 Čeština