Hantera OLE-objekt
Introduktion
OLE (Object Linking and Embedding) är Microsoft:s ramverk för en sammansatt dokumentteknologi. Kortfattat är ett sammansatt dokument något som ett skärmskrivbord som kan innehålla visuella objekt och informationsobjekt av alla slag: text, kalendrar, animationer, ljud, rörlig video, 3D, ständigt uppdaterade nyheter, kontroller och så vidare. Varje skrivbordsobjekt är en oberoende programenhet som kan interagera med en användare och även kommunicera med andra objekt på skrivbordet.
OLE (Object Linking and Embedding) stöds av många olika program och används för att göra innehåll skapat i ett program tillgängligt i ett annat. Till exempel kan du infoga ett Microsoft Word-dokument i Microsoft Excel. Klicka på för att se vilka typer av innehåll du kan infogaObjekt påFöra in meny. Endast program som är installerade på datorn och som stöder OLE-objekt visas iObjekttyp låda.
Infoga OLE-objekt i ett kalkylblad
Aspose.Cells stöder att lägga till, extrahera och manipulera OLE-objekt i kalkylblad. Av denna anledning har Aspose.CellsOleObjectCollectionklass, används för att lägga till ett nytt OLE-objekt till samlingslistan. En annan klass,OleObject, representerar ett OLE-objekt. Den har några viktiga medlemmar:
- ImageDataanger bilddata (ikon) av byte-arraytyp. Bilden kommer att visas för att visa OLE-objektet i kalkylbladet.
- Objektdataspecificerar objektdata i form av en byte-array. Dessa data kommer att visas i dess relaterade program när du dubbelklickar på OLE-objektikonen.
Följande exempel visar hur man lägger till ett OLE-objekt i ett kalkylblad.
// 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"); |
Extrahera OLE-objekt i arbetsboken
Följande exempel visar hur man extraherar OLE-objekt i en arbetsbok. Exemplet hämtar olika OLE-objekt från en befintlig XLS-fil och sparar olika filer (DOC, XLS, PPT, PDF, etc.) baserat på OLE-objektets filformattyp.
Här är skärmdumpen av mallen XLS-filen, den har olika OLE-objekt inbäddade i det första kalkylbladet.
Mallfilen innehåller fyra OLE-objekt
Efter att ha kört koden kan vi spara olika filer baserat på deras respektive OLE Objects-formattyper. Följande är skärmdumpar för några av de skapade filerna.
Den extraherade XLS-filen
Den extraherade PPT-filen
// 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(); | |
} | |
} |
Extraherar inbäddad MOL-fil
Aspose.Cells stöder extrahering av objekt av ovanliga typer som MOL (molekylär datafil som innehåller information om atomer och bindningar). Följande kodavsnitt visar att man extraherar en inbäddad MOL-fil och sparar den på disken genom att använda dettaexempel på excel-fil.
// 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++; | |
} | |
} |