Làm việc với các tế bào và mô hình dữ liệu

Làm việc với các tế bào và mô hình dữ liệu

Làm việc với các tế bào và mô hình dữ liệu

Các Cell lớp là giao diện chính để đọc và viết các giá trị tế bào bảng, công thức và phong cách riêng biệt. Cells Thu thập bằng cách sử dụng một dòng địa chỉ.


viết giá trị cho các tế bào

Sử dụng Cell::PutValue để viết văn bản, số, booleans hoặc ngày cho một ô:

#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;
}

Thiết lập công thức

Sử dụng Cell::SetFormula(formula) để viết một công thức tương thích với Excel. Công thức được đánh giá bởi Excel hoặc các độc giả tương ứng khi tệp được mở.

sheet.GetCells()["B4"].SetFormula("=SUM(B2:B3)");
sheet.GetCells()["C4"].SetFormula("=AVERAGE(B2:B3)");

Đọc giá trị ô

Đọc giá trị hiện tại của một tế bào với Cell::GetValue(), mà trở lại a CellValue Chuyển đổi sang một loại cụ thể bằng cách sử dụng phụ kiện thích hợp:

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

Các CellValue lớp cung cấp các phụ kiện kiểu:

MethodLoại Return
AsDouble()double
AsInteger()int
AsBool()bool
AsString()std::string
AsDateTime()DateTime

Accessing Cells by Row và Column (Cục truy cập bằng đường dây)

Ngoài các dây hướng, các tế bào truy cập bằng hàng dựa trên không và chỉ số cột:

// Address string
Cell& cellA1 = sheet.GetCells()["A1"];

// Row/column index (0-based)
int row = cellA1.GetRow();
int col = cellA1.GetColumn();

Các tế bào nhầm

Sử dụng Cells::Merge để kết hợp một chuỗi trực tiếp của các tế bào vào một:

CellArea area = CellArea::CreateCellArea("A1", "C1");
sheet.GetCells().Merge(area.StartRow, area.StartColumn,
                       area.EndRow - area.StartRow + 1,
                       area.EndColumn - area.StartColumn + 1);

Hiển thị Text

Để lấy lại giá trị ô như văn bản hiển thị định dạng (được áp dụng các định thức số), sử dụng Cell::GetDisplayStringValue():

std::string display = sheet.GetCells()["B2"].GetDisplayStringValue();

Mẹo và Thực hành Tốt nhất

  • Prefer PutValue qua SetValue Đối với các nhiệm vụ trực tiếp bằng văn bản - PutValue có quá tải cho tất cả các loại nguyên thủy.
  • Sử dụng GetStringValue() để lấy lại văn bản mà không cần chuyển đổi kiểu; sử dụng GetValue().AsDouble() Khi bạn cần độ chính xác số.
  • Luôn gọi SetFormula Đối với các tế bào công thức, không PutValue("=SUM(...)") - Cái này lưu trữ một dòng chữ, không phải là công thức.
  • Sử dụng CellArea::CreateCellArea(start, end) để xây dựng các đối tượng phạm vi cho hoạt động kết hợp và định dạng.

Các vấn đề thường gặp

IssueCauseFix Đặt
GetValue() Trở lại trốngCell chưa được viếtviết một giá trị với PutValue Trước khi đọc
Công thức chưa được đánh giáCông thức được tiết kiệm như stringSử dụng SetFormula(expr) Thay vì PutValue(expr)
Nhập thất bại- Tầm nhìn phạm vi bị hạn chếEnsure endRow >= startRowendColumn >= startColumn
Loại sai lầm trong đọcgọi sai As*() Phương phápTương thích với phụ kiện gốc PutValue loại

Tóm tắt Tham chiếu API

lớp học / phương phápDescription
Cell::PutValue(value)Viết một giá trị văn bản vào ô
Cell::SetFormula(formula)Thiết lập Excel Formula String
Cell::GetValue()Thu thập giá trị tế bào như một CellValue
Cell::GetStringValue()Tái giá trị tế bào như một string
Cell::GetDisplayStringValue()Khôi phục dòng hiển thị định dạng
Cell::GetRow()Nhận chỉ số hàng dựa trên zero
Cell::GetColumn()Nhận chỉ số cột dựa trên zero
Cell::GetStyle()Nhận phong cách ô hiện tại
Cell::SetStyle(style)Ứng dụng một phong cách thay đổi vào ô
CellValue::AsDouble()Chuyển đổi giá trị tế bào sang gấp đôi
CellValue::AsString()Chuyển đổi giá trị ô sang string
Cells::Merge(row, col, rows, cols)Kết hợp một phạm vi thẳng thắn

See Also

 Tiếng Việt