天天看點

Java 添加OLE對象到Excel文檔

本文介紹通過Java程式添加OLE對象到Excel文檔。OLE分為兩種形式,一種通過嵌入(Embed),方式,一種通過連結(Link)方式。前者是将對象嵌入到文檔中,外部對該對象的更改不影響嵌入操作時的對象;後者是以連結形式來儲存對象,外部任何對該對象的更改都會影響文檔。這裡的對象,支援多種不同類型(如下圖),如PDF、Word、Excel、PPT等常見格式的文檔類型。

Java 添加OLE對象到Excel文檔

本文中的Java代碼示例以Word文檔為對象通過嵌入方式添加到Excel工作表的指定單元格,代碼可供參考。

工具:Free Spire.Office for Java (免費版)

注:jar檔案擷取可通過官網下載下傳,并解壓将lib檔案夾下的Spire.Office.jar導入java程式,也可通過maven倉庫下載下傳并導入。

jar導入效果如下:

Java 添加OLE對象到Excel文檔

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添加效果:

Java 添加OLE對象到Excel文檔

(本文完)