Работа с ячейками и моделью данных
Работа с ячейками и моделью данных
В связи с этим 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)создавать объекты диапазона для слияния и форматирования операций.
Общие проблемы
| Issue | Cause | Устранить |
|---|---|---|
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) | Слияние прямоугольного диапазона |