Робота з клітинами та моделью даних
Робота з клітинами та моделью даних
У. 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) | Злиття прямокутного діапазону |