Работа с клетки и модел на данни
Работа с клетки и модел на данни
Съветът на ЕС Cell class е основният интерфейс за четене и записване на индивидуални стойности, формули и стилове в таблицата. Достъп до клетка чрез функциите на работния лист Cells събиране на данни с помощта на адресна нишка.
Написване на стойности в клетки
Използване на: Cell::PutValue за да напише текст, числа, булеви или дати в клетка:
#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;
}Настройка на формули
Използване на: Cell::SetFormula(formula) Формулите се оценяват от Excel или съвместими читатели, когато файлът е отворен.
sheet.GetCells()["B4"].SetFormula("=SUM(B2:B3)");
sheet.GetCells()["C4"].SetFormula("=AVERAGE(B2:B3)");Четене на стойностите в клетката
Прочетете текущата стойност на клетка с: Cell::GetValue(), което връща a CellValue преобразуване на конкретен тип с помощта на подходящия аксесоар:
CellValue val = sheet.GetCells()["B2"].GetValue();
double price = val.AsDouble();
std::string text = sheet.GetCells()["A2"].GetStringValue();Съветът на ЕС CellValue класът предоставя типирани аксесори:
| Методът: | Тип на връщане |
|---|---|
AsDouble() | double |
AsInteger() | int |
AsBool() | bool |
AsString() | std::string |
AsDateTime() | DateTime |
Достъп до клетки по ред и колона
В допълнение към адресни редове, достъпни клетки с индекси на ред и колона въз основа на нула:
// Address string
Cell& cellA1 = sheet.GetCells()["A1"];
// Row/column index (0-based)
int row = cellA1.GetRow();
int col = cellA1.GetColumn();Сливане на клетки
Използване на: Cells::Merge за сливане на правоъгълна група клетки в една:
CellArea area = CellArea::CreateCellArea("A1", "C1");
sheet.GetCells().Merge(area.StartRow, area.StartColumn,
area.EndRow - area.StartRow + 1,
area.EndColumn - area.StartColumn + 1);Получаване на текст от дисплея
За да изтеглите стойността на клетката като форматиран текст (прилагайки числови формати), използвайте Cell::GetDisplayStringValue():
std::string display = sheet.GetCells()["B2"].GetDisplayStringValue();Съвети и най-добри практики
- Препоръчвам:
PutValueПреминаванеSetValueза директни буквални заданияPutValueима претоварване за всички примитивни типове. - Използване на:
GetStringValue()да изтегля текст без конвертиране на тип; използванеGetValue().AsDouble()когато се нуждаете от числова точност. - Винаги звъни.
SetFormulaза клетките на формулата, неPutValue("=SUM(...)")в последния се съхранява буквален ред, а не формула. - Използване на:
CellArea::CreateCellArea(start, end)да създава обекти на диапазона за операции по сливане и форматиране.
Общи проблеми
| Издание | Причина за това | Ремонтиране |
|---|---|---|
GetValue() връща празно | Клетка не е написана. | Напишете стойност с: PutValue преди четенето. |
| Формула не е оценена | Формула запазена като нишка | Използване на: SetFormula(expr) вместо: PutValue(expr) |
| Сливане не успява | Невалидни размери на диапазона | Осигуряване на endRow >= startRow и в) endColumn >= startColumn |
| Несъответствие на типа при четене | Неправилно обаждане. As*() метод на обработка | Съвпадение на аксесоара с оригинала. PutValue тип на съоръжение |
Снимка на API референтна информация
| Клас/метод | Описание на състоянието |
|---|---|
Cell::PutValue(value) | Напишете буквално значение в клетката. |
Cell::SetFormula(formula) | Определете ред на формули в Excel |
Cell::GetValue() | Извличане на стойността в клетка като CellValue |
Cell::GetStringValue() | Извличане на стойността в клетка като нишка |
Cell::GetDisplayStringValue() | Извличане на форматирания нисък показател |
Cell::GetRow() | Получи индекса на реда, базиран на нула. |
Cell::GetColumn() | Вземете индекса на колоните с нулева база. |
Cell::GetStyle() | Вземете текущия стил на клетката |
Cell::SetStyle(style) | Прилагане на променен стил към клетката |
CellValue::AsDouble() | Преобразуване на стойността на клетката в двойна стойност |
CellValue::AsString() | Преобразуване на стойност в клетка към нишка |
Cells::Merge(row, col, rows, cols) | Сливане на правоъгълна диапазона |