การทํางานกับเซลล์และแบบจําลองข้อมูล
การทํางานกับเซลล์และแบบจําลองข้อมูล
การ Cell class เป็นอินเตอร์เฟสหลักสําหรับการอ่านและเขียนค่าเซลล์ตารางกระดาษส่วนตัว สูตร และรูปแบบ การเข้าถึงเซิลผ่านหน้างานของ worksheet 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. สูตรจะถูกวัดโดย Excel หรือเครื่องอ่านที่ตรงกันเมื่อเปิดไฟล์.
sheet.GetCells()["B4"].SetFormula("=SUM(B2:B3)");
sheet.GetCells()["C4"].SetFormula("=AVERAGE(B2:B3)");การอ่านค่าเซลล์
อ่านค่าปัจจุบันของเซลล์ด้วย Cell::GetValue(), ซึ่งคืน a CellValue object เปลี่ยนแปลงเป็นชนิดเฉพาะ โดยใช้เครื่องมือที่เหมาะสม:
CellValue val = sheet.GetCells()["B2"].GetValue();
double price = val.AsDouble();
std::string text = sheet.GetCells()["A2"].GetStringValue();การ CellValue class ให้การประกอบ accessors:
| 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() | การเรียกค่าเซลล์เป็น a CellValue |
Cell::GetStringValue() | รับค่าเซลล์เป็นสตริง |
Cell::GetDisplayStringValue() | การค้นหารหัสการแสดงที่รูปแบบ |
Cell::GetRow() | รับอัตราการแสดงแถวที่เน้นศูนย์ |
Cell::GetColumn() | รับอัตราการแสดงคอลัมน์ที่เน้นศูนย์ |
Cell::GetStyle() | รับรูปแบบเซลล์ปัจจุบัน |
Cell::SetStyle(style) | ใช้รูปแบบที่เปลี่ยนไปในเซลล์ |
CellValue::AsDouble() | เปลี่ยนค่าเซลล์เป็นสองเท่า |
CellValue::AsString() | เปลี่ยนค่าเซลล์เป็นสตริง |
Cells::Merge(row, col, rows, cols) | การรวมระยะสี่เหลี่ยม |