package com.aspose.cells.examples.articles;
import java.io.ByteArrayInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import com.aspose.cells.FileFormatType;
import com.aspose.cells.OleObject;
import com.aspose.cells.OleObjectCollection;
import com.aspose.cells.Workbook;
import com.aspose.cells.examples.Utils;
public class ExtractOLEObjects {
public static void main(String[] args) throws Exception {
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(ExtractOLEObjects.class) + "articles/";
// 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();
}
}
}
}