Работа с ячейками и моделью данных

Работа с ячейками и моделью данных

Работа с ячейками и моделью данных

В связи с этим 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(), что возвращает значение CellValue преобразовать в конкретный тип с помощью соответствующего аксессуара:

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

В связи с этим CellValue класс обеспечивает типовые аксессуары:

MethodТип возврата
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();

Советы и лучшие практики

  • Prefer PutValue перевернуто. SetValue для прямого буквального назначения PutValue имеет перегрузки для всех примитивных типов.
  • Использование: GetStringValue() для поиска текста без конвертации типа; использовать GetValue().AsDouble() когда вам нужна точность числа.
  • Всегда звони . SetFormula для ячеек формулы, не PutValue("=SUM(...)") в последнем хранится буквальная строка, а не формула.
  • Использование: CellArea::CreateCellArea(start, end) создавать объекты диапазона для слияния и форматирования операций.

Общие проблемы

IssueCauseУстранить
GetValue() возвращает пустое .Ячейка не написана.Напишите значение с: PutValue перед чтением .
Формула не оценивается.Формула сохранена в виде строки .Использование: SetFormula(expr) вместо: PutValue(expr)
Слияние не удалось.Недействительные размеры диапазонаEnsure endRow >= startRow и в том числе: endColumn >= startColumn
Несоответствие типа при чтенииНеправильное звонки. As*() методСопоставить аксессуар с оригиналом . PutValue тип:

Справочное резюме API

Класс/методDescription
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)Слияние прямоугольного диапазона

See Also

 Русский