Lavorare con le celle e il modello di dati

Lavorare con le celle e il modello di dati

Lavorare con le celle e il modello di dati

La classe Cell è l’interfaccia principale per leggere e scrivere i valori, le formule e gli stili delle singole celle del foglio di calcolo. Accedi a una cella tramite la collezione Cells del foglio di lavoro usando una stringa di indirizzo.


Scrivere valori nelle celle

Usa Cell::PutValue per scrivere testo, numeri, booleani o date in una cella:

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

Impostare le formule

Usa Cell::SetFormula(formula) per scrivere una formula compatibile con Excel. Le formule vengono valutate da Excel o da lettori compatibili quando il file viene aperto.

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

Leggere i valori delle celle

Leggi il valore corrente di una cella con Cell::GetValue(), che restituisce un oggetto CellValue. Converti a un tipo specifico usando l’accessore appropriato:

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

La classe CellValue fornisce accessor tipizzati:

MetodoTipo di ritorno
AsDouble()double
AsInteger()int
AsBool()bool
AsString()std::string
AsDateTime()DateTime

Accesso alle celle per riga e colonna

Oltre alle stringhe di indirizzo, accedi alle celle tramite indici di riga e colonna basati su zero:

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

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

Unione delle celle

Usa Cells::Merge per unire un intervallo rettangolare di celle in una sola:

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

Ottenere il testo visualizzato

Per recuperare il valore della cella come testo visualizzato formattato (applicando i formati numerici), usa Cell::GetDisplayStringValue():

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

Suggerimenti e migliori pratiche

  • Preferisci PutValue rispetto a SetValue per assegnazioni letterali dirette — PutValue ha overload per tutti i tipi primitivi.
  • Usa GetStringValue() per recuperare il testo senza conversione di tipo; usa GetValue().AsDouble() quando hai bisogno di precisione numerica.
  • Chiama sempre SetFormula per le celle con formula, non PutValue("=SUM(...)") — quest’ultimo memorizza una stringa letterale, non una formula.
  • Usa CellArea::CreateCellArea(start, end) per creare oggetti intervallo per operazioni di unione e formattazione.

Problemi comuni

ProblemaCausaCorrezione
GetValue() restituisce vuotoLa cella non è stata scrittaScrivi un valore con PutValue prima di leggere
Formula non valutataFormula salvata come stringaUsa SetFormula(expr) invece di PutValue(expr)
Unione fallitaDimensioni dell’intervallo non valideAssicurati endRow >= startRow e endColumn >= startColumn
Tipo non corrispondente in letturaChiamata al metodo As*() erratoAbbina l’accessor al tipo originale PutValue

Riepilogo API Reference

Classe/MetodoDescrizione
Cell::PutValue(value)Scrivi un valore letterale nella cella
Cell::SetFormula(formula)Imposta una stringa di formula Excel
Cell::GetValue()Recupera il valore della cella come un CellValue
Cell::GetStringValue()Recupera il valore della cella come stringa
Cell::GetDisplayStringValue()Recupera la stringa di visualizzazione formattata
Cell::GetRow()Ottieni l’indice di riga a base zero
Cell::GetColumn()Ottieni l’indice di colonna basato su zero
Cell::GetStyle()Ottieni lo stile della cella corrente
Cell::SetStyle(style)Applica uno stile modificato alla cella
CellValue::AsDouble()Converti il valore della cella in double
CellValue::AsString()Converti il valore della cella in string
Cells::Merge(row, col, rows, cols)Unisci un intervallo rettangolare

Vedi anche

 Italiano