Lucrarea cu celulele și modelul de date
Lucrarea cu celulele și modelul de date
În ceea ce priveşte Cell class este interfața principală pentru citirea și scrierea valorilor, formulelor și stilurilor celulelor individuale ale fișei de calcul. Acces la o celulă prin intermediul fișierului de lucru Cells colectarea folosind o șir de adrese.
Scrierea valorilor în celule
Utilizare: Cell::PutValue pentru a scrie text, numere, boolean sau date într-o celulă:
#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;
}Setarea formulelor
Utilizare: Cell::SetFormula(formula) Excel sau cititorii compatibili evaluează formulele atunci când se deschide fișierul.
sheet.GetCells()["B4"].SetFormula("=SUM(B2:B3)");
sheet.GetCells()["C4"].SetFormula("=AVERAGE(B2:B3)");Citirea valorilor celulei
Citeste valoarea curentă a unei celule cu: Cell::GetValue(), care returnează o CellValue Obiect. Convertiti la un tip specific folosind accesorul corespunzator:
CellValue val = sheet.GetCells()["B2"].GetValue();
double price = val.AsDouble();
std::string text = sheet.GetCells()["A2"].GetStringValue();În ceea ce priveşte CellValue clasa oferă accesorii tipati:
| Metoda de evaluare | Tip de returnare |
|---|---|
AsDouble() | double |
AsInteger() | int |
AsBool() | bool |
AsString() | std::string |
AsDateTime() | DateTime |
Accesarea celulelor pe rând și coloană
În plus față de șirurile de adrese, celulele de acces prin indici ale rândurilor și coloanelor bazate pe zero:
// Address string
Cell& cellA1 = sheet.GetCells()["A1"];
// Row/column index (0-based)
int row = cellA1.GetRow();
int col = cellA1.GetColumn();Celule care fuzionează
Utilizare: Cells::Merge pentru a uni o gamă rectangulară de celule într-una:
CellArea area = CellArea::CreateCellArea("A1", "C1");
sheet.GetCells().Merge(area.StartRow, area.StartColumn,
area.EndRow - area.StartRow + 1,
area.EndColumn - area.StartColumn + 1);Obținerea textului de afișare
Pentru a obține valoarea celulei ca text formatat (aplicând formate de numere), utilizați Cell::GetDisplayStringValue():
std::string display = sheet.GetCells()["B2"].GetDisplayStringValue();Sfaturi şi cele mai bune practici
- Preferă
PutValueÎncheiat.SetValuepentru atribuții directePutValueare supraîncărcări pentru toate tipurile primitive. - Utilizare:
GetStringValue()pentru a recupera text fără conversie de tip; utilizațiGetValue().AsDouble()când ai nevoie de precizie numerică. - Întotdeauna sună.
SetFormulapentru celulele formulare, nuPutValue("=SUM(...)")acesta din urmă stochează un literal de șir, nu o formulă. - Utilizare:
CellArea::CreateCellArea(start, end)pentru a construi obiecte de gamă pentru operațiuni de fuziune și formatare.
Probleme comune
| Numărul de date | Cauza | Fixare |
|---|---|---|
GetValue() returnează gol | Celula nu a fost scrisă. | Scrie o valoare cu: PutValue înainte de citire. |
| Formula nu a fost evaluată | Formula salvată ca șir | Utilizare: SetFormula(expr) în loc de: PutValue(expr) |
| Fusionare eşuată | Dimensiuni de gamă nevalide | Asigurarea endRow >= startRow și de: endColumn >= startColumn |
| Neconcordanță de tip la citire | Sună greşit. As*() metodă de evaluare | Se potriveşte accesorul cu originalul . PutValue tip de |
Rezultatele de la data aplicării.
| Clasa/Metoda | Descriere: |
|---|---|
Cell::PutValue(value) | Scrie o valoare literală în celulă. |
Cell::SetFormula(formula) | Setare a unei șiruri de formule Excel |
Cell::GetValue() | Obțineți valoarea celulei ca o CellValue |
Cell::GetStringValue() | Obține valoarea celulei ca o șiră |
Cell::GetDisplayStringValue() | Obține șirul formatat de afișare |
Cell::GetRow() | Obțineți indicele rândului pe bază de zero |
Cell::GetColumn() | Obțineți indexul de coloană pe bază de zero |
Cell::GetStyle() | Obține stilul actual al celulei |
Cell::SetStyle(style) | Aplica un stil modificat la celulă |
CellValue::AsDouble() | Convertează valoarea celulei la dublu |
CellValue::AsString() | Convertează valoarea celulei în șir |
Cells::Merge(row, col, rows, cols) | Merge o gamă dreptunghiulară |