Hantera OLE objekt

Introduktion

OLE (Object Linking and Embedding) är Microsofts ramverk för en sammanfogande dokumentteknik. Kort sagt är en sammanfogande dokument något som en visnings- skrivbord som kan innehålla visuella och informationsobjekt av alla slag: text, kalendrar, animationer, ljud, rörlig video, 3D, löpande uppdaterade nyheter, kontroller och så vidare. Varje skrivbordsobjekt är en oberoende programenhet som kan interagera med en användare och också 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. För att se vilka typer av innehåll du kan infoga, klicka på Object i Infoga-menyn. Endast program som är installerade på datorn och som stöder OLE-objekt visas i rutan Objekttyp.

Infoga OLE-objekt i arbetsbladet

Aspose.Cells för Python via .NET stöder att lägga till, extrahera och manipulera OLE-objekt i kalkylblad. Av denna anledning har Aspose.Cells för Python via .NET klassen OleObjectCollection, som 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:

  • Egenskapen image_data anger bild (ikon) data av typen byte array. Bilden kommer att visas för att visa OLE-objektet i arbetsbladet.
  • Egenskapen object_data anger objektdata i form av en byte array. Denna data kommer att visas i sitt relaterade program när du dubbelklickar på OLE-objektikonen.

Följande exempel visar hur man lägger till en OLE-objekt/-objekt i ett arbetsblad.

from aspose.cells import Workbook
from os import os, path
import bytearray
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# The path to the documents directory.
dataDir = RunExamples.GetDataDir(".")
# Create directory if it is not already present.
IsExists = path.isdir(dataDir)
if notIsExists:
os.makedirs(dataDir)
# Instantiate a new Workbook.
workbook = Workbook()
# Get the first worksheet.
sheet = workbook.worksheets[0]
# Define a string variable to store the image path.
ImageUrl = dataDir + "logo.jpg"
# Get the picture into the streams.
fs = open(ImageUrl, "rb")
# Define a byte array.
imageData = bytearray(utils.filesize(fs))
# Obtain the picture into the array of bytes from streams.
fs.readinto(imageData)
# Close the stream.
fs.close()
# Get an excel file path in a variable.
path = dataDir + "book1.xls"
# Get the file into the streams.
fs = open(path, "rb")
# Define an array of bytes.
objectData = bytearray(utils.filesize(fs))
# Store the file from streams.
fs.readinto(objectData)
# Close the stream.
fs.close()
# Add an Ole object into the worksheet with the image
# Shown in MS Excel.
sheet.ole_objects.add(14, 3, 200, 220, imageData)
# Set embedded ole object data.
sheet.ole_objects[0].object_data = objectData
# Save the excel file
workbook.save(dataDir + "output.out.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 filformatstyp.

Efter att ha kört koden kan vi spara olika filer baserat på deras respektive OLE-objektets format.

from aspose.cells import FileFormatType, Workbook
from io import BytesIO
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# The path to the documents directory.
dataDir = RunExamples.GetDataDir(".")
# Open the template file.
workbook = Workbook(dataDir + "book1.xls")
# Get the OleObject Collection in the first worksheet.
oles = workbook.worksheets[0].ole_objects
# Loop through all the oleobjects and extract each object.
# In the worksheet.
for i in range(len(oles)):
ole = oles[i]
# Specify the output filename.
fileName = dataDir + "ole_" + str(i) + "."
# Specify each file format based on the oleobject format type.
if ole.file_format_type == FileFormatType.DOC:
fileName = "doc"
elif ole.file_format_type == FileFormatType.XLSX:
fileName = "Xlsx"
elif ole.file_format_type == FileFormatType.PPT:
fileName = "Ppt"
elif ole.file_format_type == FileFormatType.PDF:
fileName = "Pdf"
elif ole.file_format_type == FileFormatType.UNKNOWN:
fileName = "Jpg"
# Save the oleobject as a new excel file if the object type is xls.
if ole.file_format_type == FileFormatType.XLSX:
ms = BytesIO()
ms.write(ole.object_data)
oleBook = Workbook(ms)
oleBook.settings.is_hidden = False
oleBook.save(dataDir + "Excel_File" + str(i) + ".out.xlsx")
else:
fs = open(fileName, "wb")
fs.write(ole.object_data)
fs.close()

Extrahera inbäddad MOL-fil

Aspose.Cells för Python via .NET stöder att extrahera objekt av ovanliga typer som MOL (Molekylär datfil som innehåller information om atomer och bindningar). Följande kodsnutt demonstrerar hur man extraherar inbäddad MOL-fil och sparar den till disk med hjälp av denna exempelfil.

from aspose.cells import Workbook
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# directories
SourceDir = RunExamples.Get_SourceDirectory()
outputDir = RunExamples.Get_OutputDirectory()
workbook = Workbook(SourceDir + "EmbeddedMolSample.xlsx")
index = 1
for sheet in workbook.worksheets:
oles = sheet.ole_objects
for ole in oles:
fileName = outputDir + "OleObject" + str(index) + ".mol "
fs = open(fileName, "wb")
fs.write(ole.object_data)
fs.close()
index
index = index + 1

Fortsatta ämnen