网站首页 > 编程文章 正文
OLE,是Object Linking and Embedding的缩写,中文译为“对象连接与嵌入”。在Office文档的运用中,是指将某个文档格式作为对象嵌入或以链接形式存在另一个文档格式里。本文就以将word文档作为对象嵌入Excel工作表为例,讲解如何通过后台运行Java代码来实现以上操作。
首先,我们需要搭建测试环境,除了安装JDK和Intellij IDEA外,还需借助第三方控件。在这里,推荐使用Free Spire.Office for Java控件。通过E-iceblue中文官网获取安装包后,解压找到lib文件夹下的Spire.office.jar,最后将其手动导入IDEA。或者也可以在IDEA中创建Maven仓库,然后在pom.xml中键入以下代码进行jar包导入。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.office.free</artifactId>
<version>3.9.0</version>
</dependency>
</dependencies>
代码示例
示例1 插入OLE对象到Excel工作表
import com.spire.xls.*;
import com.spire.xls.core.IOleObject;
import com.spire.doc.Document;
import com.spire.doc.documents.ImageType;
import java.awt.*;
import java.awt.image.BufferedImage;
public class InsertOLE {
public static void main(String[] args) {
//加载excel文档
Workbook wb = new Workbook();
wb.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.xlsx");
//获取第一个工作表
Worksheet sheet = wb.getWorksheets().get(0);
//获取Word文档图片
String docx = "C:\\Users\\Test1\\Desktop\\InsertOLE.docx";
BufferedImage image = GetWordImage(docx);
//插入OLE到工作表指定单元格
IOleObject oleObject = sheet.getOleObjects().add(docx,image,OleLinkType.Embed);//插入Embed类型的OLE
oleObject.setLocation(sheet.getCellRange("A3"));//指定单元格
oleObject.setObjectType(OleObjectType.WordDocument);//指定OLE对象类型(这里可支持多种类型)
//保存文档
wb.saveToFile("output/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;
}
}
添加效果:
示例2 提取Excel中的OLE对象
import com.spire.xls.*;
import com.spire.xls.core.IOleObject;
import java.io.*;
public class ExtractOLE {
public static void main(String[] args) {
//创建Workbook实例
Workbook workbook = new Workbook();
//加载Excel文档
workbook.loadFromFile("C:\\Users\\Test1\\Desktop\\AddOLE.xlsx");
//获取第一张工作表
Worksheet sheet = workbook.getWorksheets().get(0);
//提取工作表中的OLE对象
if (sheet.hasOleObjects()) {
for (int i = 0; i < sheet.getOleObjects().size(); i++) {
IOleObject object = sheet.getOleObjects().get(i);
OleObjectType type = sheet.getOleObjects().get(i).getObjectType();
switch (type) {
//Word文档
case WordDocument:
byteArrayToFile(object.getOleData(), "output/extractOLE.docx");
break;
}
}
}
}
public static void byteArrayToFile(byte[] datas, String destPath) {
File dest = new File(destPath);
try (InputStream is = new ByteArrayInputStream(datas);
OutputStream os = new BufferedOutputStream(new FileOutputStream(dest, false));) {
byte[] flush = new byte[1024];
int len = -1;
while ((len = is.read(flush)) != -1) {
os.write(flush, 0, len);
}
os.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
提取结果:
猜你喜欢
- 2025-05-30 activex部件不能创建对象,教你activex部件不能创建对象怎么解决
- 2025-05-30 Java生成word文档
- 2025-05-30 Spire.XLS for .NET新版来袭,新增了设置图表背景色的功能!
- 2025-05-30 用Python在Word文档中插入和删除文本框
- 2025-05-30 C#用Spire.Pdf将pdf转成word文件
- 2025-05-30 Spire.PDF for Java v2.9.1上线!支持多页PDF转换为单个SVG
- 2025-05-30 用Python更改Word文档页边距
- 2025-05-30 Spire.Doc.11.3.1 增强了 Word 到 PDF 的转换
- 2025-05-30 Spire.Doc 10.10.4 增强了 Word 到 PDF 和 RTF 的转换
- 2025-05-30 Spire.Office 8.7.0 已发布
你 发表评论:
欢迎- 最近发表
-
- 特斯拉599元512GU专为哨兵而来,是科技神器还是工业垃圾引热议
- 特斯拉推出512GB专用U盘,为行车记录与哨兵模式保驾护航
- Redis哨兵模式1主2从实战:高可用集群搭建全攻略
- 硬盘检测修复神器:硬盘哨兵HardDisk Sentinel
- 又一个程序员坐牢了!这些法律常识你必须掌握
- 曝光784辆占用应急车道的车辆,看看名单上有你吗?
- 手机APP为什么越做越大?网友热议微信
- 如何使用FFmpeg将AVI转换为MP4(有损转换和无损转换)
- CBN Perspective丨DeepSeek aftermath: Should Shenzhen worry about the rise of Hangzhou?
- CBN Perspective丨From lemons to legends: How Mixue shatters the “IPO spell” on tea drinks
- 标签列表
-
- spire.doc (70)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- sqljdbc4.jar下载 (56)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- 苹果ios字体下载 (56)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)