OLE オブジェクトの管理
序章
OLE (Object Linking and Embedding) は、Microsoft の複合文書技術のフレームワークです。簡単に言うと、複合ドキュメントとは、テキスト、カレンダー、アニメーション、サウンド、モーション ビデオ、3D、継続的に更新されるニュース、コントロールなど、あらゆる種類のビジュアル オブジェクトと情報オブジェクトを含むことができるディスプレイ デスクトップのようなものです。各デスクトップ オブジェクトは、ユーザーとやり取りしたり、デスクトップ上の他のオブジェクトと通信したりできる独立したプログラム エンティティです。
OLE (Object Linking and Embedding) はさまざまなプログラムでサポートされており、あるプログラムで作成されたコンテンツを別のプログラムで利用できるようにするために使用されます。たとえば、Microsoft Word ドキュメントを Microsoft Excel に挿入できます。挿入できるコンテンツの種類を確認するには、物体上で入れるメニュー。コンピュータにインストールされ、OLE オブジェクトをサポートするプログラムのみがオブジェクトタイプ箱。
ワークシートへの OLE オブジェクトの挿入
Aspose.Cells は、ワークシートでの OLE オブジェクトの追加、抽出、および操作をサポートしています。このため、Aspose.Cells にはOleObjectCollectionコレクション リストに新しい OLE オブジェクトを追加するために使用されるクラス。別のクラス、OleObject、OLE オブジェクトを表します。いくつかの重要なメンバーがあります。
- 画像データバイト配列型の画像(アイコン)データを指定します。画像が表示され、ワークシートに OLE オブジェクトが表示されます。
- オブジェクトデータオブジェクトデータをバイト配列の形式で指定します。このデータは、OLE オブジェクト アイコンをダブルクリックすると、関連するプログラムに表示されます。
次の例は、OLE オブジェクトをワークシートに追加する方法を示しています。
// 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"); |
ワークブックでの OLE オブジェクトの抽出
次の例は、ブック内の OLE オブジェクトを抽出する方法を示しています。この例では、既存の XLS ファイルからさまざまな OLE オブジェクトを取得し、OLE オブジェクトのファイル形式の種類に基づいてさまざまなファイル (DOC、XLS、PPT、PDF など) を保存します。
これは、テンプレート XLS ファイルのスクリーンショットです。最初のワークシートにさまざまな OLE オブジェクトが埋め込まれています。
テンプレート ファイルには 4 つの OLE オブジェクトが含まれています
コードを実行した後、それぞれの OLE オブジェクト形式の種類に基づいてさまざまなファイルを保存できます。以下は、作成されたファイルの一部のスクリーンショットです。
抽出された XLS ファイル
抽出されたPPTファイル
// 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(); | |
} | |
} |
埋め込まれた MOL ファイルの抽出
Aspose.Cells は、MOL (原子と結合に関する情報を含む分子データ ファイル) のような珍しいタイプのオブジェクトの抽出をサポートします。次のコード スニペットは、埋め込まれた MOL ファイルを抽出し、これを使用してディスクに保存する方法を示しています。サンプルエクセルファイル.
// 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++; | |
} | |
} |