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:
| Method | Loạ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
PutValuequaSetValueĐối với các nhiệm vụ trực tiếp bằng văn bản -PutValuecó 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ụngGetValue().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ôngPutValue("=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
| Issue | Cause | Fix Đặt |
|---|---|---|
GetValue() Trở lại trống | Cell chưa được viết | viế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ư string | Sử 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 >= startRow và endColumn >= startColumn |
| Loại sai lầm trong đọc | gọi sai As*() Phương pháp | Tươ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áp | Description |
|---|---|
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 |