إدارة بيانات ملفات إكسل باستخدام C++
كيفية إضافة بيانات إلى الخلايا
توفر Aspose.Cells فئة، Workbook، التي تمثل ملف Microsoft Excel. تحتوي الفئة Workbook على مجموعة Worksheets التي تسمح بالوصول إلى كل ورقة عمل في ملف Excel. تمثل ورقة العمل بالفئة Worksheet. توفر الفئة Worksheet مجموعة Cells. يمثل كل عنصر في مجموعة Cells كائنًا من الفئة Cell.
تسمح Aspose.Cells للمطورين بإضافة بيانات إلى الخلايا في ورقات العمل عن طريق استدعاء طريقة PutValue لفئة Cell. توفر Aspose.Cells إصدارات متعددة من الطريقة PutValue التي تتيح للمطورين إضافة أنواع مختلفة من البيانات إلى الخلايا. باستخدام هذه الإصدارات المتعددة للطريقة PutValue، يمكن إضافة قيم بوليانية، نصية، مزدوجة، صحيحة أو تاريخ / وقت،إلى الخلية.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main()
{
Aspose::Cells::Startup();
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
Workbook workbook;
WorksheetCollection worksheets = workbook.GetWorksheets();
Worksheet worksheet = worksheets.Get(0);
worksheet.GetCells().Get(U16String(u"A1")).PutValue(U16String(u"Hello World"));
worksheet.GetCells().Get(U16String(u"A2")).PutValue(20.5);
worksheet.GetCells().Get(U16String(u"A3")).PutValue((int32_t)15);
worksheet.GetCells().Get(U16String(u"A4")).PutValue(true);
Cell cellA1 = worksheet.GetCells().Get(U16String(u"A4"));
Style style = cellA1.GetStyle();
style.SetNumber(15);
cellA1.SetStyle(style);
workbook.Save(outDir + u"output.out.xls");
std::cout << "Data inserted and workbook saved successfully." << std::endl;
Aspose::Cells::Cleanup();
}
كيفية تحسين الكفاءة
إذا استخدمت الطريقة PutValue لوضع كمية كبيرة من البيانات في ورقة عمل، يجب أولاً إضافة القيم إلى الخلايا حسب الصفوف ثم حسب الأعمدة. هذا النهج يحسن بشكل كبير كفاءة تطبيقاتك.
كيفية استرداد البيانات من الخلايا
توفر Aspose.Cells فئة Workbook التي تمثل ملف Microsoft Excel. تحتوي الفئة Workbook على مجموعة Worksheets التي تسمح بالوصول إلى أوراق العمل في الملف. تمثل ورقة العمل بالفئة Worksheet. توفر الفئة Worksheet مجموعة Cells. كل عنصر في مجموعة Cells يمثل كائنًا من الفئة Cell.
توفر الفئة Cell خصائصًا عدة تسمح للمطورين باسترداد القيم من الخلايا وفقًا لأنواع بياناتها. تتضمن هذه الخصائص:
- StringValue: يعيد قيمة السلسلة للخلية.
- DoubleValue: يعيد قيمة مزدوجة للخلية.
- BoolValue: يعيد قيمة Boolean للخلية.
- DateTimeValue: يعيد قيمة تاريخ / وقت للخلية.
- FloatValue: يعيد قيمة عائمة للخلية.
- IntValue: يعيد قيمة العدد الصحيح للخلية.
عندما لا يتم ملؤها، تثير الخلايا مع DoubleValue أو FloatValue استثناء.
يمكن أيضًا فحص نوع البيانات الموجود في خلية باستخدام خاصية Type لفئة Cell . في الواقع، تعتمد خاصية Type لفئة Cell على تعداد CellValueType والذي تم سرده أسفله:
أنواع قيم الخلية | الوصف |
---|---|
IsBool | يحدد أن قيمة الخلية هي بولية. |
IsDateTime | يحدد أن قيمة الخلية هي تاريخ/وقت. |
IsNull | تمثل خلية فارغة. |
IsNumeric | يحدد أن قيمة الخلية هي رقمية. |
IsString | يحدد أن قيمة الخلية هي نصية. |
IsUnknown | يحدد أن قيمة الخلية غير معروفة. |
يمكنك أيضًا استخدام أنواع قيم الخلية المحددة مسبقًا أعلاه للمقارنة مع نوع البيانات الحاضرة في كل خلية.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main()
{
Aspose::Cells::Startup();
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
U16String inputFilePath = srcDir + u"book1.xls";
Workbook workbook(inputFilePath);
Worksheet worksheet = workbook.GetWorksheets().Get(0);
int maxRow = worksheet.GetCells().GetMaxDataRow();
int maxCol = worksheet.GetCells().GetMaxDataColumn();
for (int row = 0; row <= maxRow; row++)
{
for (int col = 0; col <= maxCol; col++)
{
Cell cell = worksheet.GetCells().Get(row, col);
U16String stringValue;
double doubleValue = 0.0;
bool boolValue = false;
switch (cell.GetType())
{
case CellValueType::IsString:
stringValue = cell.GetStringValue();
std::cout << "String Value: " << stringValue.ToUtf8() << std::endl;
break;
case CellValueType::IsNumeric:
doubleValue = cell.GetDoubleValue();
std::cout << "Double Value: " << doubleValue << std::endl;
break;
case CellValueType::IsBool:
boolValue = cell.GetBoolValue();
std::cout << "Bool Value: " << boolValue << std::endl;
break;
case CellValueType::IsDateTime:
stringValue = cell.GetStringValue();
std::cout << "DateTime Value: " << stringValue.ToUtf8() << std::endl;
break;
case CellValueType::IsUnknown:
stringValue = cell.GetStringValue();
std::cout << "Unknown Value: " << stringValue.ToUtf8() << std::endl;
break;
case CellValueType::IsNull:
break;
}
}
}
Aspose::Cells::Cleanup();
return 0;
}
مواضيع متقدمة
- الوصول إلى الخلايا في ورقة العمل
- تحويل بيانات النص الرقمية إلى رقم
- إنشاء المجاميع الفرعية
- تصفية البيانات
- فرز البيانات
- التحقق من البيانات
- العثور على البيانات أو البحث
- الحصول على قيمة سلسلة الخلية بتنسيق وبدون تنسيق
- إضافة نص فائق النص الغني HTML داخل الخلية
- إدراج الروابط التشعبية في إكسل أو أوبن أوفيس
- كيفية استخدام العدادات وأين استخدامها
- قياس عرض وارتفاع قيمة الخلية بوحدة البكسل
- قراءة قيم الخلية في مواضيع متعددة بشكل متزامن
- التحويل بين اسم الخلية وفهرس الصف/العمود
- ملء البيانات أولاً حسب الصف ثم حسب العمود
- الحفاظ على بادئة اقتباس واحدة لقيمة الخلية أو النطاق
- الوصول إلى وتحديث أجزاء النص الغني للخلية