Gestion des objets OLE

Introduction

OLE (Object Linking and Embedding) est le cadre de Microsoft pour une technologie de document composé. En bref, un document composé est quelque chose comme un bureau d’affichage qui peut contenir des objets visuels et informatifs de toutes sortes : texte, calendriers, animations, son, vidéo animée, 3D, actualités continuellement mises à jour, commandes, etc. Chaque objet de bureau est une entité de programme indépendante qui peut interagir avec un utilisateur et également communiquer avec d’autres objets sur le bureau.

OLE (Object Linking and Embedding) est pris en charge par de nombreux programmes différents et est utilisé pour rendre le contenu créé dans un programme disponible dans un autre. Par exemple, vous pouvez insérer un document Word Microsoft dans Excel Microsoft. Pour voir les types de contenu que vous pouvez insérer, cliquez surObjet sur leInsérer menu. Seuls les programmes installés sur l’ordinateur et prenant en charge les objets OLE apparaissent dans laType d’objet boîte.

Insertion d’objets OLE dans une feuille de calcul

Aspose.Cells prend en charge l’ajout, l’extraction et la manipulation d’objets OLE dans les feuilles de calcul. Pour cette raison, Aspose.Cells a leOleObjectCollectionclasse, utilisée pour ajouter un nouvel objet OLE à la liste de collection. Une autre classe,OleObject, représente un objet OLE. Il compte quelques membres importants :

  • ImageDataspécifie les données d’image (icône) de type tableau d’octets. L’image s’affichera pour montrer l’objet OLE dans la feuille de calcul.
  • ObjectDataspécifie les données d’objet sous la forme d’un tableau d’octets. Ces données seront affichées dans son programme associé lorsque vous double-cliquez sur l’icône de l’objet OLE.

L’exemple suivant montre comment ajouter un objet OLE dans une feuille de calcul.

// 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");

Extraction d’objets OLE dans le classeur

L’exemple suivant montre comment extraire des objets OLE dans un classeur. L’exemple obtient différents objets OLE à partir d’un fichier XLS existant et enregistre différents fichiers (DOC, XLS, PPT, PDF, etc.) en fonction du type de format de fichier de l’objet OLE.

Voici la capture d’écran du fichier modèle XLS, il contient différents objets OLE intégrés dans la première feuille de calcul.

Le fichier modèle contient quatre objets OLE

tâche : image_autre_texte

Après avoir exécuté le code, nous pouvons enregistrer différents fichiers en fonction de leurs types de format d’objets OLE respectifs. Voici des captures d’écran de certains des fichiers créés.

Le fichier XLS extrait

tâche : image_autre_texte

Le fichier PPT extrait

tâche : image_autre_texte

// 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();
}
}

Extraction du fichier MOL intégré

Aspose.Cells prend en charge l’extraction d’objets de types peu courants tels que MOL (fichier de données moléculaires contenant des informations sur les atomes et les liaisons). L’extrait de code suivant montre comment extraire le fichier MOL intégré et l’enregistrer sur le disque à l’aide de ceciexemple de fichier excel.

// 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++;
}
}

Sujets avancés