先说下
<การพึ่งพา> <roupId> org.apache.poi </groupid> <ratifactid> poi-excelant </artifactid> <sersion> 3.12 </version> </การพึ่งพาอาศัย> <predency> <roupid> org.apache.poi </groupid> <roupId> org.apache.poi </groupid> <ratifactid> poi-ooxml </artifactid> <cersion> 3.8 </เวอร์ชัน> </perentency> <pendency> <roupid> org.apache.poi </groupid> <การพึ่งพา> <roupId> org.jfree </groupId> <ratifactid> jfreechart </artifactid> <version> 1.0.19 </เวอร์ชัน> </การพึ่งพา> <การพึ่งพา> <!
示例, 下图
如上图, 需要替换的字符串地方“ $ 1” 为“ 1231”, 在指定位置插入书签, 并命名“ ทดสอบ”, 插入的图片如下插入的图片如下
本人也没太过多去研究, 亲测通过有效, 在这分享下
1.Demo
นำเข้า java.awt.font; นำเข้า java.io.file; นำเข้า java.io.fileinputstream; นำเข้า java.io.fileoutputstream; นำเข้า java.io.ioException; นำเข้า java.io.InputStream; นำเข้า Java.math.biginteger; java.util.iterator; นำเข้า java.util.list; นำเข้า java.util.map นำเข้า java.util.set; นำเข้า org.apache.poi.poixmldocument นำเข้า org.apache.poi.openxml4j.opc.opcpacpackage; org.apache.poi.xwpf.usermodel.xwpfdocument; นำเข้า org.apache.poi.xwpf.usermodel.xwpfparagraph; นำเข้า org.apache.poi.xwpf.usermodel.xwpfrun; org.docx4j.dml.wordprocessingDrawing.Inline; นำเข้า org.docx4j.finders.RangeFinder; นำเข้า org.docx4j.openpackaging.packages.wordprocessingmlpackage; org.docx4j.openpackaging.parts.wordprocessingml.maindocumentpart นำเข้า org.docx4j.wml.body; นำเข้า org.docx4j.wml.booleandefaulttrue; นำเข้า org.docx4j.wml.ctbookmark org.docx4j.wml.document; นำเข้า org.docx4j.wml.drawing; นำเข้า org.docx4j.wml.hpsmeasure; นำเข้า org.docx4j.wml.objectFactory; นำเข้า org.docx4j.wml.p; org.docx4j.wml.rpr; นำเข้า org.jfree.chart.chartfactory; นำเข้า org.jfree.chart.chartutilities; นำเข้า org.jfree.chart.jfreechart; นำเข้า org.jfree.chart.labels.standpiesectionlabeleneratorator org. org.jfree.chart.title.texttitle; นำเข้า org.jfree.data.general.defaultpiedataset; นำเข้า com.aisino.qysds.common.constant.errorconstants; นำเข้า com.aisino.qysds.common.exception.Sexception; com.google.common.collect.maps; คลาสสาธารณะ ExportBgServiceImpl {โมฆะคงที่สาธารณะหลัก (สตริง [] args) โยนข้อยกเว้น {แผนที่ <สตริง, สตริง> แผนที่ = maps.newhashmap (); map.put ("$ 1", "1231"); เอกสาร XWPFDOCUMENT = ใหม่ XWPFDOCUMENT (POIXMLDOCUMENT.OPENPACKAGE ("D: //TP//test.docx")); Iterator <XWPFParagraph> itpara = document.getParagraphsiterator (); ในขณะที่ (itpara.hasnext ()) {xwpfaragraph ย่อหน้าวรรค = (xwpfaragraph) itpara.next (); รายการ <xwpfrun> runs = paragraph.getRuns (); สำหรับ (int i = 0; i <runs.size (); i ++) {string oneparastring = runs.get (i) .getText (runs.get (i) .getTextPosition ()); สำหรับ (map.entry <string, string> entry: map.entryset ()) {ถ้า (oneparastring.equals (entry.getKey ())) {oneParastring = oneparastring.replace (entry.getKey (), entry.getValue ()); }} runs.get (i) .settext (oneparastring, 0); }} fileOutputStream Outstream = null; Outstream = ใหม่ fileOutputStream ("d: //tp//test1.docx"); Document.write (Outstream); Outstream.close (); // ----------------------------------- 这块为生成图片 dataSet defaultPiedAtaset = ใหม่ defaultPiedAtAset (); DataSet.SetValue ("修改类", 1); DataSet.SetValue ("提示类", 1); DataSet.SetValue ("校验不通过", 3); DataSet.SetValue ("正常类", 3); jfreechart chart = chartfactory.createpiechart3d (null, ชุดข้อมูล, จริง, เท็จ, เท็จ); chart.getLegend (). setItemfont (ตัวอักษรใหม่ ("黑体", font.bold, 15)); // 设置图例类别字体 // textTitle title = new TextTitle (titlestring); // title.setFont (ฟอนต์ใหม่ ("黑体", font.italic, 20)); // 设置标题字体 // chart.settitle (ชื่อ); pieplot pieplot = (pieplot) chart.getPlot (); DecimalFormat df = decimalformat ใหม่ ("0.00%"); numberFormat nf = numberFormat.getInstance (); เครื่องกำเนิดไฟฟ้า StandardPiesectionLabelGenerator = ใหม่ StandardPiesectionLabelGenerator ("{0} {2}", nf, df); // 获得 StandardPiesectionLabelGenerator 对象, 生成的格式,, // {0}设置百分比 pieplot.setLabelfont (ตัวอักษรใหม่ ("黑体", font.italic, 15)); // 设置饼图中类别字体 pieplot.setNodatamessage ("此时并没有任何数据可用"); pieplot.setcircular (เท็จ); pieplot.setlabelgap (0.02d); pieplot.setignorenullValues (true); // 设置不显示空位 pieplot.etignorezerovalues (จริง); // 设置不显示负值或零值สตริง fname = "pie.png"; ไฟล์ไฟล์ = ไฟล์ใหม่ ("d: // tp", fname); if (file.exists ()) {file.delete (); } ลอง {Chartutilities.savechartaspng (ไฟล์, แผนภูมิ, 800, 500); ไฟล์ file2 = ไฟล์ใหม่ ("d: //tp//test1.docx"); WordProcessingMlPackage wpackage = WordProcessingMlPackage.load (ใหม่ FileInputStream (file2)); MainDocumentPart MainDocumentPart = wpackage.getMainDocumentPart (); เอกสาร WMLDOC = (เอกสาร) MainDocumentPart.getJaxBelement (); ร่างกาย = wmldoc.getbody (); // 提取正文中所有段落 list <jobch> ย่อหน้า = body.getContent (); // 提取书签并创建书签的游标 RangeFinder RT = RangeFinder ใหม่ ("CTBOOKMARK", "CTMARKUPREANG"); ใหม่ Traversalutil (ย่อหน้า, RT); สำหรับ (ctbookmark bm: rt.getStarts ()) {ถ้า (bm.getName (). เท่ากับ ("ทดสอบ")) {// 这里的ทดสอบ为คำ文档中预设的 inputstream inputstream = ใหม่ fileInputStream (ไฟล์); ไบต์ [] bytes = ioutils.tobytearray (inputstream); BinaryPartabstractImage ImagePart = BinaryPartabstractImage.CreateImagePart (WPackage, Bytes); inline inline = imagepart.createImageInline (null, null, 0, 1, false, 10,000); // 这里的 100000 不是正常屏幕大小, 用于设置插入图片的大小 p p p = (p) (bm.getparent ()); ObjectFactory Factory = New ObjectFactory (); // r 对象是匿名的复杂类型, 然而我并不知道具体啥意思, 估计这个要好好去看看 ooxml 才知道 r run = factory.creater (); // การวาดรูป 理解为画布? การวาดรูป = โรงงาน createdrawing (); Drawing.getanchororInline (). เพิ่ม (อินไลน์); run.getContent (). เพิ่ม (รูปวาด); p.getContent (). เพิ่ม (เรียกใช้); }} wpackage.save (ใหม่ fileOutputStream (ไฟล์ใหม่ ("d: //tp//test1.docx"))); } catch (ioexception e) {}}}最后效果图如下:
总结
以上所述是小编给大家介绍的 Java 替换 Word 文档文字并指定位置插入图片, 希望对大家有所帮助, 如果大家有任何疑问请给我留言, 小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持! 小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!