OLE Nesneleri Yönetme

Giriş

OLE (Object Linking and Embedding), Microsoft’un bileşik bir belge teknolojisi için çerçevesidir. Kısaca, bileşik bir belge türü her türlü görsel ve bilgi nesnesini içerebilen bir masaüstü görüntüsü gibidir: metin, takvimler, animasyonlar, ses, hareketli video, 3D, sürekli güncellenen haberler, kontroller vb. Her masaüstü nesnesi, bir kullanıcıyla etkileşime girebilir ve aynı zamanda masaüstünde bulunan diğer nesnelerle iletişim kurabilir.

OLE (Object Linking and Embedding), birçok farklı programa destek sağlar ve bir programda oluşturulan içeriğin başka bir programa kullanılmasını sağlar. Örneğin, bir Microsoft Word belgesini Microsoft Excel’e ekleyebilirsiniz. Ekleyebileceğiniz içerik türlerini görmek için Ekle menüsünde Nesne‘ye tıklayın. Bilgisayara yüklü olan ve OLE nesneleri destekleyen yalnızca programlar Nesne türü kutusunda görünür.

Çalışsayan Elemanları Çalışsayan Eleman (OLE) Nesnesi Ekleme

Aspose.Cells for Python via .NET, OLE nesnelerini çalışma sayfalarına ekleme, çıkarma ve manipüle etme desteği sağlar. Bu nedenle, Aspose.Cells for Python via .NET’de, koleksiyon listesine yeni bir OLE nesnesi eklemek için kullanılan OleObjectCollection sınıfı bulunur. Diğer bir sınıf olan OleObject, bir OLE nesnesini temsil eder. Bazı önemli üyeleri şunlardır:

  • image_data özelliği, ikon olarak gösterilecek görüntü (ikon) verisini bayt dizisi türünde belirtir. Görüntü, çalışsayan elemanı çalışsayan eleman levhasında göstermek için kullanılacaktır.
  • object_data özelliği, bayt dizisi biçimindeki nesne verisini belirtir. Bu veri, çalışsayan eleman simgesine çift tıkladığınızda ilgili programda gösterilecektir.

Aşağıdaki örnek, çalışsayan elemanları çalışsayan eleman(lar)ı çalışsayan eleman yapıştırma.

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

Çalışsayan Elemanlar’ın Çalışsayan Elemanları Çıkarma

Aşağıdaki örnek, bir çalışma kitabından çalışsayan elemanları çıkarmayı göstermektedir. Örnek, mevcut bir XLS dosyasından farklı çalışsayan elemanlar alır ve farklı dosyalar (DOC, XLS, PPT, PDF vb.) çalışsayan elemanın dosya biçim türüne dayalı olarak kaydeder.

Kodu çalıştırdıktan sonra, ilgili Çalışsayan Elemanın biçim türlerine dayalı olarak farklı dosyaları kaydedebiliriz.

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()

Gömülü MOL Dosyasının Çıkarılması

Aspose.Cells for Python via .NET, MOL gibi sıradışı türdeki nesneleri çıkarma desteği sağlar (atomlar ve bağlar hakkında bilgi içeren Moleküler veri dosyası). Aşağıdaki kod parçacığı, gömülü MOL dosyasını çıkarmayı ve bu örnek Excel dosyasını kullanarak diske kaydetmeyi gösterir.

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

Gelişmiş Konular