Trabajar con las células y el modelo de datos

Trabajar con las células y el modelo de datos

Trabajar con las células y el modelo de datos

El Cell clase es la interfaz primaria para leer y escribir valores, fórmulas y estilos de célula en una hoja de trabajo individual. Cells Colección utilizando una línea de dirección.


Escribir valores a las células

Uso Cell::PutValue para escribir texto, números, booleanos o fechas en una célula:

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

Establecimiento de fórmulas

Uso Cell::SetFormula(formula) Para escribir una fórmula compatible con Excel. las fórmulas se evalúan por Excel o lectores compatibles cuando el archivo se abre.

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

Leer los valores de la célula

Leer el valor actual de una célula con Cell::GetValue(),que devuelve a CellValue Convertir a un tipo específico utilizando el accesorio adecuado:

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

El CellValue La clase proporciona accesorios tipizados:

MetodologíaTipo de regreso
AsDouble()double
AsInteger()int
AsBool()bool
AsString()std::string
AsDateTime()DateTime

Acceso a las células por ronda y columna

Además de las líneas de dirección, las células de acceso por línea y índices de columna basadas en cero:

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

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

Células de movimiento

Uso Cells::Merge para fusionar una gama rectangular de células en uno:

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

Obtener texto de muestra

Para recuperar el valor de la célula como texto de pantalla formado (aplicando los formatos de número), utilizar Cell::GetDisplayStringValue():

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

Consejos y mejores prácticas

  • Preferimos PutValue Sobre SetValue para las tareas literales directas - PutValue Tiene sobrecarga para todos los tipos primitivos.
  • Uso GetStringValue() para recuperar texto sin conversión de tipo; utilizar GetValue().AsDouble() Cuando necesitas precisión numérica.
  • Siempre llamo SetFormula para las células de fórmula, no PutValue("=SUM(...)") - el último almacena una línea literal, no una fórmula.
  • Uso CellArea::CreateCellArea(start, end) para construir objetos de rango para fusiones y operaciones de formatación.

Problemas comunes

ProblemasCausasFixado
GetValue() Volver vacíoLa celda no está escritaEscribe un valor con PutValue Antes de leer
La fórmula no evaluadaLa fórmula se salva como stringUso SetFormula(expr) En lugar de PutValue(expr)
Fracas de la mezclaDimensiones de rango invalidasSeguridad endRow >= startRow y endColumn >= startColumn
Tipo de error en la lecturallamando equivocadamente As*() MetodologíaCompare el accesorio con el original PutValue Tipo

Sumación de referencia API

Clase / MétodoDescripción
Cell::PutValue(value)Escribe un valor literal a la célula.
Cell::SetFormula(formula)Configura una fórmula Excel
Cell::GetValue()Recuperar el valor de la célula como una CellValue
Cell::GetStringValue()Recuperar el valor de la célula como una string
Cell::GetDisplayStringValue()Retirar la red de pantalla formátil
Cell::GetRow()Obtenga el índice de línea basado en cero
Cell::GetColumn()Obtenga el índice de columna basado en cero
Cell::GetStyle()Obtenga el estilo celular actual
Cell::SetStyle(style)Aplique un estilo modificado a la célula
CellValue::AsDouble()Convertir el valor de la célula en doble
CellValue::AsString()Convertir el valor de la célula en string
Cells::Merge(row, col, rows, cols)Unir una línea rectangular

Ver también

 Español