我想用POI在Word里插入一张图片,这是我的测试代码。执行之后word打不开!错误如图中的提示

packagecom.sampleCodes;importorg.apache.poi.POIXMLDocument;importorg.apache.poi.util.... package com.sampleCodes;import org.apache.poi.POIXMLDocument;import org.apache.poi.util.Units;import org.apache.poi.xwpf.usermodel.BreakType;import org.apache.poi.xwpf.usermodel.XWPFDocument;import org.apache.poi.xwpf.usermodel.XWPFParagraph;import org.apache.poi.xwpf.usermodel.XWPFRun;import java.io.FileInputStream;import java.io.FileOutputStream;/** * Demonstrates how to add pictures in a .docx document * * @author Yegor Kozlov */public class Sample_InsertPictureToWord2007FromAPI { public static void main(String[] args) throws Exception { XWPFDocument doc = new XWPFDocument(POIXMLDocument.openPackage("E:/POIworks/src/com/orientFiles/Test Word2007.docx")); XWPFParagraph p = doc.createParagraph(); XWPFRun r = p.createRun(); String[] picName={"E:/POIworks/src/com/pic/insertPicture.jpeg"}; for(String imgFile : picName) { int format; if(imgFile.endsWith(".emf")) format = XWPFDocument.PICTURE_TYPE_EMF; else if(imgFile.endsWith(".wmf")) format = XWPFDocument.PICTURE_TYPE_WMF; else if(imgFile.endsWith(".pict")) format = XWPFDocument.PICTURE_TYPE_PICT; else if(imgFile.endsWith(".jpeg") || imgFile.endsWith(".jpg")) format = XWPFDocument.PICTURE_TYPE_JPEG; else if(imgFile.endsWith(".png")) format = XWPFDocument.PICTURE_TYPE_PNG; else if(imgFile.endsWith(".dib")) format = XWPFDocument.PICTURE_TYPE_DIB; else if(imgFile.endsWith(".gif")) format = XWPFDocument.PICTURE_TYPE_GIF; else if(imgFile.endsWith(".tiff")) format = XWPFDocument.PICTURE_TYPE_TIFF; else if(imgFile.endsWith(".eps")) format = XWPFDocument.PICTURE_TYPE_EPS; else if(imgFile.endsWith(".bmp")) format = XWPFDocument.PICTURE_TYPE_BMP; else if(imgFile.endsWith(".wpg")) format = XWPFDocument.PICTURE_TYPE_WPG; else { System.err.println("Unsupported picture: " + imgFile + ". Expected emf|wmf|pict|jpeg|png|dib|gif|tiff|eps|bmp|wpg"); continue; } r.setText(imgFile); r.addBreak(); r.addPicture(new FileInputStream(imgFile), format, imgFile, Units.toEMU(200), Units.toEMU(200)); // 200x200 pixels r.addBreak(BreakType.PAGE); } FileOutputStream out = new FileOutputStream("E:/POIworks/src/com/newFiles/Test Word2007.docx"); System.out.println("yes"); doc.write(out); out.close(); }}
这段代码是我根据官方提供的API的例子改写的,仅仅是将所用文件换成了我自己的而已!
——甚至我把方法体中的第一行对doc的定义换回原来的
XWPFDocument doc = new XWPFDocument();
也不行;还是像那样打不开!
展开
 我来答
匿名用户
2014-06-14
展开全部



图片中是解决方案

博思aippt
2024-07-20 广告
作为深圳市博思云创科技有限公司的工作人员,对于Word文档生成PPT的操作,我们有以下建议:1. 使用另存为功能:在Word中编辑完文档后,点击文件->另存为,选择PowerPoint演示文稿(*.pptx)格式,即可将文档内容转换为PPT... 点击进入详情页
本回答由博思aippt提供
我爱源代码
2018-03-01
知道答主
回答量:14
采纳率:0%
帮助的人:6.2万
展开全部
        public void addPicture(string filepath, string oldfileName, uint id)

        {

            System.IO.FileStream gfs = new System.IO.FileStream(filepath, System.IO.FileMode.Open, System.IO.FileAccess.Read);

            XWPFParagraph para = doc.CreateParagraph();

            XWPFRun r = para.CreateRun();

            XWPFPicture pic = r.AddPicture(gfs, (int)NPOI.XWPF.UserModel.PictureType.JPEG, oldfileName, 1000000, 1000000);

            NPOI.OpenXmlFormats.Dml.WordProcessing.CT_Inline inline = r.GetCTR().GetDrawingList()[0].inline[0];

            inline.docPr.id = id;//默认插入少了这个ID号,它就是图片的序号,从 1开始编号的。这个是我折腾了一整天弄才弄好的。

            gfs.Close();

        }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d4d2ac2
2014-06-18 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:617
采纳率:0%
帮助的人:136万
展开全部
建议你参考下pageoffice
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式