-
2021-03-21 09:20:00
import java.util.ArrayList;
import java.util.List;
import com.heavenlake.wordapi.Document;
/*
* 石磊
* 2009-02-26
* 诚信能环
*/
public class UpdateWord {
public static void main(String[] args) {
try {
Document doc = new Document();
doc.open("F:/a.doc");
/*
* 自定义文本javatext和表格样式table
*/
//插入文本
//doc.insertAtBookmark("图片","我是石磊","javatext");
//插入表格
doc.insertAtBookmark("表格",UpdateWord.returnLis());
//插入表格 并使用自定义表格样式
//doc.insertAtBookmark("啊啊",UpdateWord.returnLis(),"table");
//插入图片
//doc.insertAtBookmark("图片",new File("F:\\photo\\表情\\tao.gif "));
//读取表格数据
//List list = doc.readTable(1, 4);
//System.out.println(list.size());
//合并单元格,并插入数据到合并后的单元格
//doc.mergeCell(1, 1, 1, 1, 3, "我被合并了");
/*
* 只替换找到的第一个toFindText文本
* replace(java.lang.String toFindText, java.lang.String newText)
* 查找toFindText,并替换为设定文本newText 只替换找到的第一个toFindText
*/
//doc.replace("9", "替换为10");
//全局替换
//doc.replaceAll("9", "全局替换");
doc.close(true);
} catch (Exception e) {
e.printStackTrace();
}
}
public static List returnLis(){
List list = new ArrayList();
String[] array = new String[10];
for (int i = 0 ; i < 10 ; i ++ ) {
array[i] = String.valueOf(i);
list.add(array);
}
return list;
}
}
更多相关内容 -
Java解析word,获取文档中图片位置的方法
2020-08-28 08:47:50下面小编就为大家分享一篇Java解析word,获取文档中图片位置的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
java导出图片到word文档
2018-07-30 10:56:43java:多个图片导出到word文档里显示,用于打印图片导出 -
关于java下载Word文档图片显示不全的问题
2020-03-16 17:59:00关于java 从FTP下载Word文档图片显示不全的问题 最近想实现这样一个功能,从ftp服务器获取word文档下载下来,但是出现了一下问题: 本地启动的tomcat,可以下载word,图片显示正常;测试服务器上下载下来的文件只...关于java 从FTP下载Word文档图片显示不全的问题
最近想实现这样一个功能,从ftp服务器获取word文档下载下来,但是出现了一下问题:
- 本地启动的tomcat,可以下载word,图片显示正常;测试服务器上下载下来的文件只显示文字,图片不显示
- 经反复测试,测试服务器所下载word文档只能包含jpg格式的图片,png格式的图片不行,如图:
从网上搜了好多解决的方案都没用,包括:
1.解除锁定
2.信任中心设置
可能是走火入魔了,不去找代码的问题,去找一些没有卵用的解决方法,还试图改过受信任的站点,觉得自己网址不安全引起的,最后发现要加这两行代码:
ftpClient.setFileType(FTP.BINARY_FILE_TYPE); // 设置下载文件为二进制模式 ftpClient.setFileTransferMode(FTP.STREAM_TRANSFER_MODE); /// 传输文件为流的形式
终于行了
对了,想起来了,关于ftp这块,前一段时间还发现一个坑,也是下载文件,那次好像是音频文件,本地tomcat可以,测试服务器上tomcat也可以,生产环境不行
加了如下代码:ftpClient.enterLocalPassiveMode();// 防止端口堵塞(被动模式)
以后发现有的环境可以,有的环境不可以,多看看ftp的设置和模式
-
解决java中html转word文档,转成功后的word文档在断网情况下无法显示图片问题
2021-02-26 19:46:50前一段时间遇到一个问题,就是将html转成word文档,里面有图片,表格,和各种形式的文字。...当我们在断网的情况下(或者拷贝到两一台电脑上)打开word文档的时候实际上看到的图片是一个链接,也就是说图...前一段时间遇到一个问题,就是将html转成word文档,里面有图片,表格,和各种形式的文字。刚开始的做法是将html代码取出来,然后以留的形式进行保存,后缀名为.doc。当我转成之后发现一切完美,但是图片出现了问题:
1.图片大小、像素有问题。
2.(最严重的)图片存在word的是一个链接而已。
当我们在断网的情况下(或者拷贝到两一台电脑上)打开word文档的时候 实际上看到的图片是一个链接,也就是说图片转化的不成功。
其实从本质上来说,我们可以看一下转化之后所谓的word文档的格式,(点击另存为,看文件类型)发现其实转化之后的文档的文件类型仍然是.html的格式。只有当我们再次另存为并且选择文件类型为.doc格式的时候 才能做到真正意义上的转化,并且图片不会出现上述问题。原因大致是html转word的时候中间会经过一步处理,先将html的文件转成了xml文件,然后在转成.doc格式,同时将html的图片转成了Base64编码的格式(替换了图片的链接)存在了xml文件里。(我们可以打开将任意一篇.doc格式的word文档另存为成.xml文档后分析带有图片的那部分代码。)
于是乎浏览网上各种大神的解决办法,发现并没有一个很好的解决方法。网上的关于html转化word的解决办法总结起来有以下几种情况:
1.用ASPOSE.WORDS控件来处理。(涉及到了asp。。还有神马控件。。扩展性太差,,果断不深入这个方法。废弃之。)
2.把html文件里面的图片转成Base64格式存储。
好像是涉及到了上面所叙述的html转word的原理部分,但是那是word做的事,鬼知道当我们在选择将word另存为.doc格式的时候word做了什么操作。。。。我们都知道html标签里的图片形式为:
将图片转成Base64编码容易,但是并不是将Base64编码的图片简单的放到src=“xxxxx”里面就行了,需要能让word读懂。 转成能让word读懂的格式就更不容易了(也就是前文提到的那个xml文件)。因为图片有很多格式(.jpg/.png等等),还要涉及到word里特殊的标签(类似这种)。。。。 所以在尝试了之后也放弃了。
3.用POI 这个jar包
说这个的更是扯。Apache的POI对图片的处理不友好,甚至有的版本根本就不支持。在入坑很久之后,果断放弃。。。
4. javacdoc 的包
亲测 不可以。以上4中方法是网上讨论最多的,我从09年的帖子一直翻到17年的,总结下来的。。发现并没有找到解决办法。。最后不得已,决定自己解析html文档,转化word。最终成功转化,实现了自己想要的结果。实现起来也很简单,只是解析了一下word而已。
5.利用freemaker模板。
这个可以解决,但是要大动干戈。实际开发的过程中不会因为一点问题就换模板的。这样不利于开发和维护。
解决思路:
设法解决转成word的时候另存为时候看到的文件类型不是.html格式的就ok,这样的话就不会以图片链接的形式放在word里面。
解决办法:(相关demo和jar包后面会给出)
1.先 用jsoup的包将html格式化。(此处用于解析html代码。方便后面用itext包调用)
2.利用iText的jar包,这个jar包是转化pdf用到的,但是转化成word也能用。保存后在word里面的文件类型是.rtf格式的。能够完美解决问题。
成功后的结果:
文件类型:
Demo地址:
http://download.csdn.net/download/wht21888/10120532
--------------------- 本文来自 kihtoner 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/wht21888/article/details/78545712?utm_source=copy
-
Java读取word文档内容并输出成网页(含图片,公式)
2017-10-10 16:57:19本代码实现使用Java程序读取word文档成网页,将word文档按原样在网页输出。项目编码为UTF-8,文件编码也是utf8,再不要说乱码这种骚话了,选择utf8加载项目就不会乱码 -
java将html转word并将图片打进word内,离线可看
2018-09-28 13:37:01完整项目包括所有jar包,完美支持html转word,并解决图片断网不能访问的问题。调用HtmlToWord类测试即可,注意修改调用文件的路径,因里面用到jacob,需要将jacob.dll拷贝到项目所在jre\bin目录下面 -
java freemarker导出word -包含多张图片导出
2016-11-23 16:45:44java freemarker导出word -包含多张图片导出 -
java在word(*.docx)指定地点插入图片
2021-03-08 03:09:44最近因为一个项目需要在已经存在的word模板的指定地点插入图片,而且项目采用的是java,然而我对Java并不太熟,网上的资料大多是在生成模板的时候添加图片,我折腾了挺久才解决这个问题,在此记录下来。微软在MS ...最近因为一个项目需要在已经存在的word模板的指定地点插入图片,而且项目采用的是java,然而我对Java并不太熟,网上的资料大多是在生成模板的时候添加图片,我折腾了挺久才解决这个问题,在此记录下来。
微软在MS Office 2007之后开始推出了.docx格式的word文档,推行ooxml(office open xml),也就是结合zip技术和xml技术来存储word文档。对docx文档进行操作本质上就是对xml文件在进行操作,这样思路要清晰一点。百度发现大多数资料都是采用POI,然而又有人说POI在插入图片的时候有bug,于是换google,发现了一个叫docx4j的包,但是中文资料较少,作为一个大学四级都考了N次的人来说(泪目)。。。
jdk版本:1.8
docx4j版本:3.3.1
MS Office版本:MS Office 2016 for mac
思路
首先在word模板中需要添加图片的地方添加书签,这个书签就作为定位的依据。
然后在java中找到这个书签,一般来说书签都是处于一个段落中,然后找到这个书签的父级段落,把图片加入到这个段落中就可以了。
代码
public static void main(String[] args) throws Exception {
// 模板文件路径
String templatePath = "template.docx";
// 生成的文件路径
String targetPath = "target.docx";
// 书签名
String bookmarkName = "bookmark";
// 图片路径
String imagePath = "image.jpg";
// 载入模板文件
WordprocessingMLPackage wPackage = WordprocessingMLPackage.load(new FileInputStream(templatePath));
// 提取正文
MainDocumentPart mainDocumentPart = wPackage.getMainDocumentPart();
Document wmlDoc = (Document) mainDocumentPart.getJaxbElement();
Body body = wmlDoc.getBody();
// 提取正文中所有段落
List paragraphs = body.getContent();
// 提取书签并创建书签的游标
RangeFinder rt = new RangeFinder("CTBookmark", "CTMarkupRange");
new TraversalUtil(paragraphs, rt);
// 遍历书签
for (CTBookmark bm:rt.getStarts()) {
// 这儿可以对单个书签进行操作,也可以用一个map对所有的书签进行处理
if (bm.getName().equals(bookmarkName)){
// 读入图片并转化为字节数组,因为docx4j只能字节数组的方式插入图片
InputStream is = new FileInputStream(imagePath);
byte[] bytes = IOUtils.toByteArray(is);
// 穿件一个行内图片
BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wPackage, bytes);
// createImageInline函数的前四个参数我都没有找到具体啥意思,,,,
// 最有一个是限制图片的宽度,缩放的依据
Inline inline = imagePart.createImageInline(null, null, 0,1, false, 800);
// 获取该书签的父级段落
P p = (P)(bm.getParent());
ObjectFactory factory = new ObjectFactory();
// R对象是匿名的复杂类型,然而我并不知道具体啥意思,估计这个要好好去看看ooxml才知道
R run = factory.createR();
// drawing理解为画布?
Drawing drawing = factory.createDrawing();
drawing.getAnchorOrInline().add(inline);
run.getContent().add(drawing);
p.getContent().add(run);
}
}
wPackage.save(new FileOutputStream(targetPath));
}
docx4j的好处在于可以完全跨平台、开源免费、不需要安装office也可用,而且它还支持maven管理:
org.docx4j
docx4j
3.3.1
docx4j给出了很多例子,很多需求都可以通过阅读示例代码解决。
参考
-
LibreOffice:java 预览Excel、java预览word、java预览DOCX
2020-08-04 17:41:27LibreOffice:java 预览Excel、java预览word、java预览DOCX -
java word文件转图片
2022-01-18 22:23:21网上尝试了一些方案,这个最好用(用到了jar包是...话不多说,直接上代码(最下面main函数测试结果): package com.util; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.Buffere -
POI用addPicture插入图片到word里面无法显示
2021-03-06 01:43:28text解决了,表格解决了,结果才发现图片用XWPFDocument压根无法实现addPicture,POI自身有bug,图片是加入到word文件里面了,可是显示不了。。。于是乎,又折腾了2天,终于整蛊了怎么让图片在里面显示出来,其他的... -
java freemarker 导出word图片显示异常
2021-03-17 15:48:121.word中放入一个图片2.ftl文件中搜索pkg:binaryData3.删除数据,用变量替换image.png附:转换本地图片和网络图片本地图片public String getImageStr1() {String imgFile = "E:/123.jpg";InputStream in = null;byte... -
easypoi 模板导出图片不显示,循环指令中合并单元格格式错乱问题解决
2022-03-09 10:44:50(1)模板导出图片不显示(实际上导出来了只是最小化显示了) (2)fe循环指令存在而合并单元格的时候格式错乱问题 (3)fe存在一对多关系的时候格式错乱问题 不想下载的可以参考博文 ,代码是一样的 ... -
java在线编辑保存Word文件(支持跨浏览器)
2018-04-28 13:00:36java调用PageOffice V4.4实现在线编辑保存Word文件(支持跨浏览器) -
使用poi替换word中的图片
2021-03-16 09:35:50使用poi替换word中的图片,无需加书签,doc/docx均可,亲测。 -
word插入html 转换为docx图片不显示问题
2021-06-08 16:08:15场景描述使用mht格式利用freemark将网页上动态输入的图片搞到mht里面,转换为docx格式。...结果转换出来的docx图片就不显示(其实不是不显示,是压根就没有图片的占位),但是使用office word打开... -
java导出word(带图片)
2021-02-12 12:57:58//设置图片显示位置 73 img.scaleAbsolute(60, 60);//直接设定显示尺寸74 //img.scalePercent(50);//表示显示的大小为原尺寸的50%75 //img.scalePercent(25, 12);//图像高宽的显示比例76 //img.setRotation(30);//... -
Java导出word 图片重复
2022-02-18 15:38:59Java导出word 遍历图片重复 -
freemark导出word全过程 + 图片不显示问题
2020-04-01 22:53:051.按照客户要求来编辑“绘制”所需word文档 使用word绘制出客户需要的那种结果,让客户确认结果,然后再制作。 2.绘制完成后,另存为《Word 2003 XML 文档(*.xml)》 确认无误后,另存 3.将保存后的文件的后缀名改为... -
POI用addPicture插入图片到word里面无法显示问题解决 | 学步园
2021-02-28 11:34:37text解决了,表格解决了,结果才发现图片用XWPFDocument压根无法实现addPicture,POI自身有bug,图片是加入到word文件里面了,可是显示不了。。。于是乎,又折腾了2天,终于整蛊了怎么让图片在里面显示出来,其他的... -
java在word中插入图片的一些问题
2021-08-19 18:39:59生成的word文档中会插入一张图片,java类型为BufferImage。生成word后,发现图片的布局是嵌入,这样图片显示的时候会被遮住一大半。修改图片的布局或者行间距可以解决这个问题,选择修改word模板的行间距解决图片... -
Java 生成word文件,带样式,带页眉,带页码,带图片,带表格
2014-10-19 16:03:11Java 生成word文件,带样式,带页眉,带页码,带图片,带表格,需要相关iText包,包可在http://download.csdn.net/detail/wuxinxing1981/8055977 链接下载。 -
java word 插件
2021-04-13 01:27:54java怎么判断word文档版本PDF也是有分的。有些是文字的内容,有些是图片里有文字。前者转换还可以接受,后者转换就不堪入目了。网上很多java PDF的插件的,读出内容,再用插件将内容保存成word。高级点的插件可能... -
java生成word(文字和图片)
2021-02-26 19:36:481、整体思路利用xml模板,在模板中预留占位标识(${yourContent}),然后将xml转为ftl文件,通过Map传值填充对应的内容即可,word其实和html一样,也有自己的xml标签,表头、段落、图片、以及字体、标题等的标签。... -
Java 导出带图片和列表的 Word
2021-03-11 12:05:01虽然 Apache POI 是非常强大的针对 Microsoft Office 读写的工具,但是其太过于复杂,往往不太好编写代码,且编写出的代码不宜维护(也可能只是网上大家分享的代码大多都不好好整理的原因)。所以在导出读取 Excel ... -
java Html转wordDemo和相关jar包.zip
2021-11-09 12:02:52Html转wordDemo和相关jar包。 解决java中html转word文档,转成功后的word文档在断网情况下无法显示图片问题。 搞了好多天,网上的帖子达不到效果。于是自己搞了个办法,亲测可用。 -
基于poi导出word以及图片
2019-05-13 17:22:581、poi版本3.13 2、可进行表格替换。复制、图片导出 3、可直接运行 -
java – BufferedImage不显示(全黑)但可以显示Image
2021-02-28 17:16:26我是Java图形(一般的计算机图形...目前,我正在尝试在Java GUI中与原始图像一起显示BufferedImage.这是我的代码:Image oriImage = robot.getQwerkController().getVideoStreamService().getFrame(); //load the ori... -
java如何在word中添加图形?图文详解
2021-02-28 11:33:09今天就来为大家介绍java如何在word中添加图形并且通过生动的图片详细解析。首先介绍如何使用java编程在Word文档中添加形状(图形),这其中包括添加单个图形、组合图形,和格式化图形样式,以及如何设置形状填充色、...