Travailler avec les cellules et le modèle de données
Travailler avec les cellules et le modèle de données
Le Cell classe est l’interface primaire pour la lecture et l’écriture des valeurs cellulaires, formules et styles de feuille d’oeuvre individuelles. Cells La collection utilise une ligne d’adresse.
Écrire des valeurs aux cellules
Utiliser Cell::PutValue Pour écrire un texte, des nombres, les booleans ou les dates dans une cellule :
#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;
}Définir des formules
Utiliser Cell::SetFormula(formula) Pour écrire une formule compatible avec Excel. les formulaires sont évalués par Excel ou les lecteurs compatibles lorsque le fichier est ouvert.
sheet.GetCells()["B4"].SetFormula("=SUM(B2:B3)");
sheet.GetCells()["C4"].SetFormula("=AVERAGE(B2:B3)");Lire les valeurs cellulaires
Lire la valeur actuelle d’une cellule avec Cell::GetValue(),qui revient à CellValue Convertir à un type spécifique en utilisant l’accessoire approprié :
CellValue val = sheet.GetCells()["B2"].GetValue();
double price = val.AsDouble();
std::string text = sheet.GetCells()["A2"].GetStringValue();Le CellValue La classe fournit des accessoires typiques :
| méthode | Type de retour |
|---|---|
AsDouble() | double |
AsInteger() | int |
AsBool() | bool |
AsString() | std::string |
AsDateTime() | DateTime |
Accès aux cellules par roule et colonne
En plus des lignes d’adresse, les cellules d’accès par ligne basée sur zéro et les indices de colonne:
// Address string
Cell& cellA1 = sheet.GetCells()["A1"];
// Row/column index (0-based)
int row = cellA1.GetRow();
int col = cellA1.GetColumn();Les cellules qui se déchirent
Utiliser Cells::Merge Pour combiner une gamme rectangulaire de cellules dans un :
CellArea area = CellArea::CreateCellArea("A1", "C1");
sheet.GetCells().Merge(area.StartRow, area.StartColumn,
area.EndRow - area.StartRow + 1,
area.EndColumn - area.StartColumn + 1);Obtenir un texte de diffusion
Pour récupérer la valeur cellulaire en tant que texte d’affichage formaté (application de formats numériques), utilisez Cell::GetDisplayStringValue():
std::string display = sheet.GetCells()["B2"].GetDisplayStringValue();Conseils et meilleures pratiques
- Préférez
PutValuesurSetValuepour les tâches littéraires directes -PutValueIl a des surcharges pour tous les types primitifs. - Utiliser
GetStringValue()pour récupérer le texte sans conversion de type; utilisezGetValue().AsDouble()Quand vous avez besoin de précision numérique. - Toujours appeler
SetFormulaPour les cellules de formule, pasPutValue("=SUM(...)")- le dernier stocke une ligne littéraire, pas une formule. - Utiliser
CellArea::CreateCellArea(start, end)Construire des objets de gamme pour fusion et formater les opérations.
Les problèmes communs
| Problème | Cause | Fixé |
|---|---|---|
GetValue() Retour vide | La cellule n’a pas été écrite | Écrire une valeur avec PutValue Avant la lecture |
| Formule non évaluée | Formule sauvée en tant que string | Utiliser SetFormula(expr) Au lieu de PutValue(expr) |
| Faute de fusion | Dimension de portée invalide | assure endRow >= startRow et endColumn >= startColumn |
| Type de malconciliation à lire | Appeler erreur As*() méthode | Compatible avec l’accessoire original PutValue Type |
Le résumé de référence API
| Classes / Méthodes | Description |
|---|---|
Cell::PutValue(value) | Écrire une valeur littéraire à la cellule |
Cell::SetFormula(formula) | Définir une formule Excel |
Cell::GetValue() | Retraite la valeur cellulaire en tant que CellValue |
Cell::GetStringValue() | Retirez la valeur cellulaire en tant que string |
Cell::GetDisplayStringValue() | Retranscrire la barre d’affichage formatée |
Cell::GetRow() | Obtenez l’indice de ligne basé sur zéro |
Cell::GetColumn() | Obtenez l’indice de colonne basé sur zéro |
Cell::GetStyle() | Obtenez le style cellulaire actuel |
Cell::SetStyle(style) | Application d’un style modifié à la cellule |
CellValue::AsDouble() | Convertir la valeur cellulaire à double |
CellValue::AsString() | Convertir la valeur cellulaire en string |
Cells::Merge(row, col, rows, cols) | Mettre en place un rang rectangulaire |