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ía | Tipo 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
PutValueSobreSetValuepara las tareas literales directas -PutValueTiene sobrecarga para todos los tipos primitivos. - Uso
GetStringValue()para recuperar texto sin conversión de tipo; utilizarGetValue().AsDouble()Cuando necesitas precisión numérica. - Siempre llamo
SetFormulapara las células de fórmula, noPutValue("=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
| Problemas | Causas | Fixado |
|---|---|---|
GetValue() Volver vacío | La celda no está escrita | Escribe un valor con PutValue Antes de leer |
| La fórmula no evaluada | La fórmula se salva como string | Uso SetFormula(expr) En lugar de PutValue(expr) |
| Fracas de la mezcla | Dimensiones de rango invalidas | Seguridad endRow >= startRow y endColumn >= startColumn |
| Tipo de error en la lectura | llamando equivocadamente As*() Metodología | Compare el accesorio con el original PutValue Tipo |
Sumación de referencia API
| Clase / Método | Descripció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 |