Verwalten von OLE-Objekten

Einführung

OLE (Object Linking and Embedding) ist das Framework von Microsoft für eine zusammengesetzte Dokumenttechnologie. Kurz gesagt, ein zusammengesetztes Dokument ist so etwas wie ein Anzeigedesktop, der visuelle und Informationsobjekte aller Art enthalten kann: Text, Kalender, Animationen, Ton, bewegtes Video, 3D, ständig aktualisierte Nachrichten, Steuerelemente und so weiter. Jedes Desktop-Objekt ist eine unabhängige Programmentität, die mit einem Benutzer interagieren und auch mit anderen Objekten auf dem Desktop kommunizieren kann.

OLE (Object Linking and Embedding) wird von vielen verschiedenen Programmen unterstützt und dient dazu, Inhalte, die in einem Programm erstellt wurden, in einem anderen verfügbar zu machen. Beispielsweise können Sie ein Microsoft-Word-Dokument in Microsoft-Excel einfügen. Um zu sehen, welche Inhaltstypen Sie einfügen können, klicken Sie aufObjekt auf derEinfügung Speisekarte. In der werden nur Programme angezeigt, die auf dem Computer installiert sind und OLE-Objekte unterstützenObjekttyp Kasten.

Einfügen von OLE-Objekten in das Arbeitsblatt

Aspose.Cells unterstützt das Hinzufügen, Extrahieren und Bearbeiten von OLE-Objekten in Arbeitsblättern. Aus diesem Grund hat Aspose.Cells dieOleObjectCollection Klasse, die zum Hinzufügen eines neuen OLE-Objekts zur Sammlungsliste verwendet wird. Eine andere Klasse,OLE-Objekt, stellt ein OLE-Objekt dar. Es hat einige wichtige Mitglieder:

  • DasBilddatenDie Eigenschaft gibt die Bilddaten (Symboldaten) vom Typ Byte-Array an. Das Bild wird angezeigt, um das OLE-Objekt im Arbeitsblatt anzuzeigen.
  • DasObjektdatenDie Eigenschaft gibt die Objektdaten in Form eines Byte-Arrays an. Diese Daten werden im zugehörigen Programm angezeigt, wenn Sie auf das OLE-Objekt-Symbol doppelklicken.

Das folgende Beispiel zeigt, wie Sie einem Arbeitsblatt ein oder mehrere OLE-Objekte hinzufügen.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// Create directory if it is not already present.
bool IsExists = System.IO.Directory.Exists(dataDir);
if (!IsExists)
System.IO.Directory.CreateDirectory(dataDir);
// Instantiate a new Workbook.
Workbook workbook = new Workbook();
// Get the first worksheet.
Worksheet sheet = workbook.Worksheets[0];
// Define a string variable to store the image path.
string ImageUrl = dataDir + "logo.jpg";
// Get the picture into the streams.
FileStream fs = File.OpenRead(ImageUrl);
// Define a byte array.
byte[] imageData = new Byte[fs.Length];
// Obtain the picture into the array of bytes from streams.
fs.Read(imageData, 0, imageData.Length);
// Close the stream.
fs.Close();
// Get an excel file path in a variable.
string path = dataDir + "book1.xls";
// Get the file into the streams.
fs = File.OpenRead(path);
// Define an array of bytes.
byte[] objectData = new Byte[fs.Length];
// Store the file from streams.
fs.Read(objectData, 0, objectData.Length);
// Close the stream.
fs.Close();
// Add an Ole object into the worksheet with the image
// Shown in MS Excel.
sheet.OleObjects.Add(14, 3, 200, 220, imageData);
// Set embedded ole object data.
sheet.OleObjects[0].ObjectData = objectData;
// Save the excel file
workbook.Save(dataDir + "output.out.xls");

Extrahieren von OLE-Objekten in der Arbeitsmappe

Das folgende Beispiel zeigt, wie OLE-Objekte in einer Arbeitsmappe extrahiert werden. Das Beispiel ruft verschiedene OLE-Objekte aus einer vorhandenen XLS-Datei ab und speichert verschiedene Dateien (DOC, XLS, PPT, PDF usw.) basierend auf dem Dateiformattyp des OLE-Objekts.

Nach dem Ausführen des Codes können wir verschiedene Dateien basierend auf ihren jeweiligen OLE-Objektformattypen speichern.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// Open the template file.
Workbook workbook = new Workbook(dataDir + "book1.xls");
// Get the OleObject Collection in the first worksheet.
Aspose.Cells.Drawing.OleObjectCollection oles = workbook.Worksheets[0].OleObjects;
// Loop through all the oleobjects and extract each object.
// In the worksheet.
for (int i = 0; i < oles.Count; i++)
{
Aspose.Cells.Drawing.OleObject ole = oles[i];
// Specify the output filename.
string fileName = dataDir + "ole_" + i + ".";
// Specify each file format based on the oleobject format type.
switch (ole.FileFormatType)
{
case FileFormatType.Doc:
fileName += "doc";
break;
case FileFormatType.Xlsx:
fileName += "Xlsx";
break;
case FileFormatType.Ppt:
fileName += "Ppt";
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 (ole.FileFormatType == FileFormatType.Xlsx)
{
MemoryStream ms = new MemoryStream();
ms.Write(ole.ObjectData, 0, ole.ObjectData.Length);
Workbook oleBook = new Workbook(ms);
oleBook.Settings.IsHidden = false;
oleBook.Save(dataDir + "Excel_File" + i + ".out.xlsx");
}
// Create the files based on the oleobject format types.
else
{
FileStream fs = File.Create(fileName);
fs.Write(ole.ObjectData, 0, ole.ObjectData.Length);
fs.Close();
}
}

Extrahieren der eingebetteten MOL-Datei

Aspose.Cells unterstützt das Extrahieren von Objekten ungewöhnlicher Typen wie MOL (Molekulardatendatei mit Informationen zu Atomen und Bindungen). Das folgende Code-Snippet demonstriert das Extrahieren der eingebetteten MOL-Datei und das Speichern auf der Festplatte, indem Sie diese verwendenExcel-Beispieldatei.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
//directories
string SourceDir = RunExamples.Get_SourceDirectory();
string outputDir = RunExamples.Get_OutputDirectory();
Workbook workbook = new Workbook(SourceDir + "EmbeddedMolSample.xlsx");
var index = 1;
foreach (Worksheet sheet in workbook.Worksheets)
{
OleObjectCollection oles = sheet.OleObjects;
foreach (var ole in oles)
{
string fileName = outputDir + "OleObject" + index + ".mol ";
FileStream fs = File.Create(fileName);
fs.Write(ole.ObjectData, 0, ole.ObjectData.Length);
fs.Close();
index++;
}
}

Themen vorantreiben