本文介紹通過Java程式添加OLE對象到Excel文檔。OLE分為兩種形式,一種通過嵌入(Embed),方式,一種通過連結(Link)方式。前者是将對象嵌入到文檔中,外部對該對象的更改不影響嵌入操作時的對象;後者是以連結形式來儲存對象,外部任何對該對象的更改都會影響文檔。這裡的對象,支援多種不同類型(如下圖),如PDF、Word、Excel、PPT等常見格式的文檔類型。
本文中的Java代碼示例以Word文檔為對象通過嵌入方式添加到Excel工作表的指定單元格,代碼可供參考。
工具:Free Spire.Office for Java (免費版)
注:jar檔案擷取可通過官網下載下傳,并解壓将lib檔案夾下的Spire.Office.jar導入java程式,也可通過maven倉庫下載下傳并導入。
jar導入效果如下:
Java 代碼示例
import com.spire.doc.documents.ImageType;
import com.spire.xls.*;
import com.spire.xls.core.IOleObject;
import com.spire.doc.Document;
import java.awt.*;
import java.awt.image.BufferedImage;
public class AddOLE {
public static void main(String[] args) {
//加載excel文檔
Workbook wb = new Workbook();
wb.loadFromFile("test.xlsx");
//擷取第一個工作表
Worksheet sheet = wb.getWorksheets().get(0);
//擷取Word文檔圖檔
String docx = "sample.docx";
BufferedImage image = GetWordImage(docx);
//插入OLE到工作表指定單元格
IOleObject oleObject = sheet.getOleObjects().add(docx,image,OleLinkType.Embed);//插入指定類型的OLE
oleObject.setLocation(sheet.getCellRange("A1"));//指定單元格
oleObject.setObjectType(OleObjectType.WordDocument);//指定OLE對象類型(這裡可支援多種類型)
//儲存文檔
wb.saveToFile("AddOLE.xlsx",ExcelVersion.Version2010);
wb.dispose();
}
//定義一個GetWordImage(string docxFile) 方法擷取圖檔,這裡的圖檔來自于Word文檔中的資料資訊圖像,将OLE對象插入到Excel工作表後,這個圖像将顯示在Excel工作表中
static BufferedImage GetWordImage(String docxFile)
{
//加載Word文檔
Document doc = new Document();
doc.loadFromFile(docxFile);
//将Word文檔的第一頁儲存為圖檔
Image olePicture = doc.saveToImages(0, ImageType.Bitmap);
return (BufferedImage) olePicture;
}
}
OLE添加效果:
(本文完)