العمل مع الخلايا ونموذج البيانات
العمل مع الخلايا ونموذج البيانات
المجلس الوزاري 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. يتم تقييم الصيغ بواسطة Excel أو القراء المتوافقين عند فتح الملف.
sheet.GetCells()["B4"].SetFormula("=SUM(B2:B3)");
sheet.GetCells()["C4"].SetFormula("=AVERAGE(B2:B3)");قراءة قيم الخلية
قراءة القيمة الحالية للخلية مع: Cell::GetValue(),، والذي يعيد a CellValue تحويل إلى نوع معين باستخدام المرفق المناسب:
CellValue val = sheet.GetCells()["B2"].GetValue();
double price = val.AsDouble();
std::string text = sheet.GetCells()["A2"].GetStringValue();المجلس الوزاري CellValue الفئة توفر أدوات إضافية مُصممة:
| طريقة | نوع الإرجاع |
|---|---|
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();نصائح وأفضل الممارسات
- تفضلين
PutValueانتهىSetValueللمهام الحرفية المباشرةPutValueلديه حمولة زائدة لكل الأنواع البدائية. - استخدام
GetStringValue()لاسترداد النص دون تحويل النوع ، استخدامGetValue().AsDouble()عندما تحتاج إلى دقة رقمية. - دائماً اتصل
SetFormulaللخلايا الصيغة، لاPutValue("=SUM(...)")الأخير يخزن حرفيًا من السلسلة، وليس صيغة. - استخدام
CellArea::CreateCellArea(start, end)لإنشاء كائنات نطاق لعمليات الجمع والتصميم.
القضايا المشتركة
| القضية | السبب | إصلاح |
|---|---|---|
GetValue() يعود فارغاً | الخلية لم تكتب | اكتب قيمة مع PutValue قبل القراءة |
| الصيغة غير مُقيّمة | الصيغة المحفوظة كسلسلة | استخدام SetFormula(expr) بدلا من PutValue(expr) |
| فشل الاندماج | أبعاد النطاق غير الصحيحة | تأمين endRow >= startRow و endColumn >= startColumn |
| عدم مطابقة النوع عند القراءة | اتصالات خاطئة As*() طريقة | تطابق المرفق مع الأصلي PutValue النوع |
إشارة API
| الفئة/الطريقة | وصف |
|---|---|
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) | دمج نطاق مستطيل |