OLE Objekte aus Arbeitsmappe extrahieren

OLE-Objekte aus einer Arbeitsmappe extrahieren

Erstellen einer Vorlagearbeitsmappe

  1. Erstellen einer Arbeitsmappe in Microsoft Excel.
  2. Fügen Sie ein Microsoft Word-Dokument, eine Excel-Arbeitsmappe und ein PDF-Dokument als OLE-Objekte auf dem ersten Arbeitsblatt hinzu.

OLE-Objekte extrahieren

Der folgende Code führt die eigentliche Arbeit des Suchens und Extrahierens von OLE-Objekten als DOCX-, XLSX-, PPTX- und PDF-Dateien durch.

// 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(ExtractOLEObjects.class);
// Instantiating a Workbook object, Open the template file.
Workbook workbook = new Workbook(dataDir + "oleFile.xlsx");
// Get the OleObject Collection in the first worksheet.
OleObjectCollection objects = workbook.getWorksheets().get(0).getOleObjects();
// Loop through all the OleObjects and extract each object in the worksheet.
for (int i = 0; i < objects.getCount(); i++) {
OleObject object = objects.get(i);
// Specify the output filename.
String fileName = "D:/object" + i + ".";
// Specify each file format based on the OleObject format type.
switch (object.getFileFormatType()) {
case FileFormatType.DOCX:
fileName += "docx";
break;
case FileFormatType.XLSX:
fileName += "xlsx";
break;
case FileFormatType.PPTX:
fileName += "pptx";
break;
case FileFormatType.PDF:
fileName += "pdf";
break;
case FileFormatType.UNKNOWN:
fileName += "jpg";
break;
default:
// ........
break;
}
// Save the OleObject as a new excel file if the object type is xls.
if (object.getFileFormatType() == FileFormatType.XLSX) {
byte[] bytes = object.getObjectData();
InputStream is = new ByteArrayInputStream(bytes);
Workbook oleBook = new Workbook(is);
oleBook.getSettings().setHidden(false);
oleBook.save(fileName);
}
// Create the files based on the OleObject format types.
else {
FileOutputStream fos = new FileOutputStream(fileName);
fos.write(object.getObjectData());
fos.close();
}
}

Fazit: