العمل مع الخلايا ونموذج البيانات

العمل مع الخلايا ونموذج البيانات

العمل مع الخلايا ونموذج البيانات

المجلس الوزاري 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)دمج نطاق مستطيل

انظر أيضا

 العربية