إدارة كائنات OLE

مقدمة

OLE (ارتباط الكائنات وتضمينها) هو إطار عمل Microsoft لتقنية المستندات المركبة. باختصار ، يعد المستند المركب شيئًا مثل سطح مكتب العرض الذي يمكن أن يحتوي على كائنات مرئية ومعلومات من جميع الأنواع: نص وتقويمات ورسوم متحركة وصوت وفيديو متحرك وثلاثي الأبعاد وأخبار محدثة باستمرار وعناصر تحكم وما إلى ذلك. كل كائن سطح مكتب هو كيان برنامج مستقل يمكنه التفاعل مع مستخدم وكذلك التواصل مع كائنات أخرى على سطح المكتب.

يتم دعم OLE (ارتباط الكائنات وتضمينها) من قبل العديد من البرامج المختلفة ويتم استخدامه لإتاحة المحتوى الذي تم إنشاؤه في أحد البرامج في برنامج آخر. على سبيل المثال ، يمكنك إدراج مستند Word Microsoft في Microsoft Excel. لمعرفة أنواع المحتوى التي يمكنك إدراجها ، انقر فوقهدف على الإدراج قائمة. تظهر فقط البرامج المثبتة على الكمبيوتر والتي تدعم كائنات OLE في الملفنوع الكائن علبة.

إدراج كائنات OLE في ورقة عمل

يدعم Aspose.Cells إضافة واستخراج ومعالجة كائنات OLE في أوراق العمل. لهذا السبب ، يمتلك Aspose.Cells الامتدادOleObjectCollectionفئة ، تستخدم لإضافة كائن OLE جديد إلى قائمة المجموعة. فئة أخرى ،كائن أوله، يمثل كائن OLE. لها بعض الأعضاء المهمين:

  • بيانات الصورةيحدد بيانات الصورة (الرمز) لنوع مصفوفة البايت. سيتم عرض الصورة لإظهار كائن OLE في ورقة العمل.
  • بيانات الكائنيحدد بيانات الكائن في شكل مصفوفة بايت. سيتم عرض هذه البيانات في البرنامج ذي الصلة عند النقر نقرًا مزدوجًا فوق رمز كائن OLE.

يوضح المثال التالي كيفية إضافة كائن OLE إلى ورقة عمل.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getDataDir(InsertingOLEObjects.class);
// Get the image file.
File file = new File(dataDir + "logo.jpg");
// Get the picture into the streams.
byte[] img = new byte[(int) file.length()];
FileInputStream fis = new FileInputStream(file);
fis.read(img);
// Get the excel file into the streams.
file = new File(dataDir + "Book1.xls");
byte[] data = new byte[(int) file.length()];
fis = new FileInputStream(file);
fis.read(data);
// Instantiate a new Workbook.
Workbook wb = new Workbook();
// Get the first worksheet.
Worksheet sheet = wb.getWorksheets().get(0);
// Add an Ole object into the worksheet with the image shown in MS Excel.
int oleObjIndex = sheet.getOleObjects().add(14, 3, 200, 220, img);
OleObject oleObj = sheet.getOleObjects().get(oleObjIndex);
// Set embedded ole object data.
oleObj.setObjectData(data);
// Save the excel file
wb.save(dataDir + "tstoleobjects.xls");

استخراج كائنات OLE في المصنف

يوضح المثال التالي كيفية استخراج كائنات OLE في مصنف. يحصل المثال على كائنات OLE مختلفة من ملف XLS موجود ويحفظ ملفات مختلفة (DOC ، XLS ، PPT ، PDF ، إلخ) بناءً على نوع تنسيق ملف كائن OLE.

فيما يلي لقطة شاشة لملف القالب XLS ، يحتوي على كائنات OLE مختلفة مضمنة في ورقة العمل الأولى.

يحتوي ملف القالب على أربعة كائنات OLE

ما يجب القيام به: image_بديل_نص

بعد تشغيل الكود ، يمكننا حفظ ملفات مختلفة بناءً على أنواع تنسيق كائنات OLE الخاصة بها. فيما يلي لقطات لبعض الملفات التي تم إنشاؤها.

الملف XLS المستخرج

ما يجب القيام به: image_بديل_نص

ملف PPT المستخرج

ما يجب القيام به: image_بديل_نص

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getDataDir(ExtractingOLEObjects.class);
// Instantiating a Workbook object
Workbook workbook = new Workbook(dataDir + "book1.xls");
// Get the OleObject Collection in the first worksheet.
OleObjectCollection oles = workbook.getWorksheets().get(0).getOleObjects();
// Loop through all the ole objects and extract each object. in the worksheet.
for (int i = 0; i < oles.getCount(); i++) {
if (oles.get(i).getMsoDrawingType() == MsoDrawingType.OLE_OBJECT) {
OleObject ole = (OleObject) oles.get(i);
// Specify the output filename.
String fileName = dataDir + "tempBook1ole" + i + ".";
// Specify each file format based on the oleformattype.
switch (ole.getFileFormatType()) {
case FileFormatType.DOC:
fileName += "doc";
break;
case FileFormatType.EXCEL_97_TO_2003:
fileName += "Xls";
break;
case FileFormatType.PPT:
fileName += "Ppt";
break;
case FileFormatType.PDF:
fileName += "Pdf";
break;
case FileFormatType.UNKNOWN:
fileName += "Jpg";
break;
default:
fileName += "data";
break;
}
FileOutputStream fos = new FileOutputStream(fileName);
byte[] data = ole.getObjectData();
fos.write(data);
fos.close();
}
}

استخراج ملف MOL مضمن

يدعم Aspose.Cells استخراج كائنات من أنواع غير شائعة مثل MOL (ملف بيانات جزيئي يحتوي على معلومات حول الذرات والروابط). يوضح مقتطف الشفرة التالي استخراج ملف MOL المضمن وحفظه على القرص باستخدام هذانموذج ملف اكسل.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the directories.
String sourceDir = Utils.Get_SourceDirectory();
String outputDir = Utils.Get_OutputDirectory();
Workbook workbook = new Workbook(sourceDir + "EmbeddedMolSample.xlsx");
int index = 1;
for (Object obj : workbook.getWorksheets())
{
Worksheet sheet = (Worksheet)obj;
OleObjectCollection oles = sheet.getOleObjects();
for (Object obj2 : oles)
{
OleObject ole = (OleObject)obj2;
String fileName = outputDir + "OleObject" + index + ".mol ";
FileOutputStream fos = new FileOutputStream(fileName);
fos.write(ole.getObjectData());
fos.flush();
fos.close();
index++;
}
}

موضوعات مسبقة