❶ java POI html转word,无法显示图片
可以读取元素,将word相应的元素转换为html相应的元素。 不过很多word的特效都是html无法展示的,具体的做法可以参考poi的官方文档,官方文档很详细。
❷ java 如何使用poi 在word 中插入图片和数据,给我一个实现的例子,
实际上还真就得一个一个set进去
我现在做的程序就有这部分机能,思路就是excel→sheet→row
然后遍历所有row,取出所有的cell放到一个存储用结构体中。
无论如何,解析的过程都需要自己来写的。
=======================================================
你的想法我明白,其实就是想要一个java与poi的databinding,定义好的数据模块可以自动和excel的对应列进行匹配。但是这个东西确实就没有啊,人家只封装了读取excel内容,没有提供这样的模块,只有自己写啊。即使是60个列,事实上绑定的逻辑也就只用写一次,而且大部分的内容只要复制粘贴就好了。
如果像下面说的做循环,赋值简单了,可是用的时候就痛苦了,要取某一个字段的时候难道要用数组下标去取?
PS 鄙视5楼的,人家要的是数据导入,拷贝一段倒出的处理来。
❸ POI操作word插入相同图片
这么做还是有个小问题,就是连续插入两个图片,不在同一行。
解决方案是给createPicture添加一个参数XWPFParagraph paragraph,换掉方法内部的
调用的时候,插入的两个图片用同一个paragraph,代码如下
XWPFParagraph paragraph = doc.createParagraph();
// 插入第一个图片
doc.createPicture(paragraph, 。。。);
//还可以插入一些文字唯粗
// doc.createRun().setText(" -----> ");
// 插入第二个图片
doc.createPicture(paragraph, 。。。);
--------------- 原因:
word的模型是
整岩山液个是一个document
然后里面有多很多个paragraph,
段落
段落和段落之间按照回车换行分割
每一段内,又可以有多个range
在这个定义的插入显示的图片的类里
一上来就创建了一个段落
只要把两次插入的图片,放到同一个段落
就在一行了。没有回车了。
通过这个方法,把段落从插入图片中提出来,还可以在两个图片之间,加入其它东西,比较文字或空格来定位。
————————————————
版权声明:本文为CSDN博主“kimmking”的原创文章粗物,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/KimmKing/java/article/details/8205439
❹ 请教:如何用JAVA POI 向Word文档里插图片 请提供下代码 谢谢!!!
楼主你可以这样操作,导入java.io.*。org.apache.poi.hwpf.*。org.apache.poi.hwpf.usermodel.Picture
String savePath= "c:\\temp\\";
String docFile= savePath+ "test.doc";
String imgFile= savePath+ "img.jpg";
HWPFDocument poiDoc = new HWPFDocument(new FileInputStream(docFile));
List picList=poiDoc.getPicturesTable().getAllPictures();
Picture picture=(Picture)picList.get(0);
try {
picture.writeImageContent(new FileOutputStream(imgFile));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
❺ java 中用poi读取word和用docx4j读取word
不知道你是具体读取Word里面的什么元素,下面以读取文字和图片为例吧,两个代码示例,你参考看看:
读取文本
import com.spire.doc.Document;
import java.io.FileWriter;
import java.io.IOException;
public class ExtractText {
public static void main(String[] args) throws IOException {
//加载Word文档
Document document = new Document();
document.loadFromFile("C:\Users\Administrator\Desktop\sample.docx");
//获取文档中的文本保存为String
String text=document.getText();
//将String写入Txt文件
writeStringToTxt(text,"ExtractedText.txt");
}
public static void writeStringToTxt(String content, String txtFileName) throws IOException {
FileWriter fWriter= new FileWriter(txtFileName,true);
try {
fWriter.write(content);
}catch(IOException ex){
ex.printStackTrace();
}finally{
try{
fWriter.flush();
fWriter.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}}
2. 读取图片
import com.spire.doc.Document;
import com.spire.doc.documents.DocumentObjectType;
import com.spire.doc.fields.DocPicture;
import com.spire.doc.interfaces.ICompositeObject;
import com.spire.doc.interfaces.IDocumentObject;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
public class ExtractImages {
public static void main(String[] args) throws IOException {
//加载Word文档
Document document = new Document();
document.loadFromFile("C:\Users\Administrator\Desktop\sample.docx");
//创建Queue对象
Queue nodes = new LinkedList();
nodes.add(document);
//创建List对象
List images = new ArrayList();
//遍历文档中的子对象
while (nodes.size() > 0) {
ICompositeObject node = nodes.poll();
for (int i = 0; i < node.getChildObjects().getCount(); i++) {
IDocumentObject child = node.getChildObjects().get(i);
if (child instanceof ICompositeObject) {
nodes.add((ICompositeObject) child);
//获取图片并添加到List
if (child.getDocumentObjectType() == DocumentObjectType.Picture) {
DocPicture picture = (DocPicture) child;
images.add(picture.getImage());
}
}
}
}
//将图片保存为PNG格式文件
for (int i = 0; i < images.size(); i++) {
File file = new File(String.format("output/图片-%d.png", i));
ImageIO.write(images.get(i), "PNG", file);
}
}
}
注意这里使用的jar包是spire.doc.jar,需要在java程序中先导入jar文件。
❻ 我想用POI在Word里插入一张图片,这是我的测试代码。执行之后word打不开!错误如图中的提示
publicvoidaddPicture(stringfilepath,stringoldfileName,uintid)
{
System.IO.FileStreamgfs=newSystem.IO.FileStream(filepath,System.IO.FileMode.Open,System.IO.FileAccess.Read);
XWPFParagraphpara=doc.CreateParagraph();
XWPFRunr=para.CreateRun();
XWPFPicturepic=r.AddPicture(gfs,(int)NPOI.XWPF.UserModel.PictureType.JPEG,oldfileName,1000000,1000000);
NPOI.OpenXmlFormats.Dml.WordProcessing.CT_Inlineinline=r.GetCTR().GetDrawingList()[0].inline[0];
inline.docPr.id=id;//默认插入少了这个ID号,它就是图片的序号,从1开始编号的。这个是我折腾了一整天弄才弄好的。
gfs.Close();
}
❼ 请问高手怎样用java在word里插入一张图呢
可以用wordapi组件来完成
import com.heavenlake.wordapi.Document;
public class test {
public test() {
Document doc = null;
try {
doc = new Document();
doc.open("e:/test.doc");//打开文件
doc.insert("第一章:嘻嘻哈哈","biaoti");//插入文字
doc.insertAtBookmark("testbookm","第一章:嘻嘻哈哈","标题");
doc.insertAtBookmark("testbookm",
new java.io.File("E:/照片/DSC236.JPG"));//插入图片
}
catch (Exception e) {
e.printStackTrace();
}
finally {
try {
if(doc!=null) doc.close(true);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
test test1 = new test();
}
}
❽ java 把office word,ppt转化为图片
从一个大神那里学来的,已测试无误
package com;
import java.awt.Dimension;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import org.apache.poi.hslf.model.TextRun;
import org.apache.poi.hslf.usermodel.RichTextRun;
import org.apache.poi.hslf.usermodel.SlideShow;
public class ExportPPT {
public static void main(String[] args) {
// 读入PPT文件
File file = new File("D:\\UPH.ppt");
doPPTtoImage(file);
}
public static boolean doPPTtoImage(File file) {
boolean isppt = checkFile(file);
if (!isppt) {
System.out.println("The image you specify don't exit!");
return false;
}
try {
FileInputStream is = new FileInputStream(file);
SlideShow ppt = new SlideShow(is);
is.close();
Dimension pgsize = ppt.getPageSize();
org.apache.poi.hslf.model.Slide[] slide = ppt.getSlides();
for (int i = 0; i < slide.length; i++) {
TextRun[] truns = slide[i].getTextRuns();
for (int k = 0; k < truns.length; k++) {
RichTextRun[] rtruns = truns[k].getRichTextRuns();
for (int l = 0; l < rtruns.length; l++) {
rtruns[l].setFontIndex(1);
rtruns[l].setFontName("宋体");
}
}
BufferedImage img = new BufferedImage(pgsize.width, pgsize.height,
BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
graphics.setPaint(Color.BLUE);
graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
slide[i].draw(graphics);
// 这里设置图片的存放路径和图片的格式(jpeg,png,bmp等等),注意生成文件路径
File path = new File("D:/images");
if (!path.exists()) {
path.mkdir();
}
FileOutputStream out = new FileOutputStream(path + "/" + (i + 1)
+ ".jpg");
javax.imageio.ImageIO.write(img, "jpeg", out);
out.close();
}
System.out.println("success!!");
return true;
} catch (FileNotFoundException e) {
System.out.println(e);
} catch (IOException e) {
}
return false;
}
// function 检查文件是否为PPT
public static boolean checkFile(File file) {
boolean isppt = false;
String filename = file.getName();
String suffixname = null;
if (filename != null && filename.indexOf(".") != -1) {
suffixname = filename.substring(filename.lastIndexOf("."));
if (suffixname.equals(".ppt")) {
isppt = true;
}
return isppt;
} else {
return isppt;
}
}
}