先说下 先说下
<pectionency> <groupid> org.apache.poi </groupid> <artifactid> poi-excelant </artifactid> <bersion> 3.12 </version> </dependency> <grouplency> <groupid> org.apache.poi </groupid> <artifactid> poi-scratchpad </artifactid> 3.12 </version> 3.12 <groupid> org.apache.poi </groupid> <artifactid> poi-ooxml </artifactid> <bersion> 3.8 </version> </fectionency> <prection> <groupid> org.apache.poi </groupid> <artifactid> poi-ooxml-schemas </expendency> 3.8 </version> </version> </version> </version> </version> </version> </version> 3. <pectionency> <groupid> org.jfree </groupid> jfreechart </artifactid> <bersion> 1.0.19 </version> </dependency> <pectionency> <!-> <groupId> org.docx4j </groupid> <artifactid> docx4j </artifactid> </version> 3.3.1.1.1.1.1.1.1.1.1.1.1.1.13.1.
示例, 下图
如上图 如上图, 需要替换的字符串地方“$ 1”为“1231”, 在指定位置插入书签, 并命名“테스트”, 插入的图片如下
本人也没太过多去研究, 亲测通过有效, 在这分享下
1. 메모
import java.awt.font; import java.io.file; import java.io.fileInputStream; import java.io.fileoutputStream; import java.io.ioexception; import java.io.inputStream; import java.math.biginteger; import java.text.decimalformat; java.util.iterator; import java.util.list; import java.util.map; import java.util.set; import org.apache.poi.poixmldocument; import org.apache.poi.openxml4j.opc.opcpackage; import org.apache.poi.util.ioutils; org.apache.poi.xwpf.usermodel.xwpfdocument; import org.apache.poi.xwpf.usermodel.xwpfparagraph; import org.apface.poi.xwpff.usermodel.xwpfrun; import org.docx4j.traversalutil; import org.docx4j.dml.wordprocessing drawing.inline; import org.docx4j.finders.rangefinder; import org.docx4j.openpackaging.packages.wordprocessingmlpackage; import org.docx4j.pankaging.part.bortingml.binary partabs avportabs; org.docx4j.openpackaging.parts.wordprocessingml.maindocumentpart; import org.docx4j.wml.body; import org.docx4j.wml.booleandefaulttrue; import org.docx4j.wml.ctbookmark; import org.docx4j.wml.wml org.docx4j.wml.document; import org.docx4j.wml.drawing; import org.docx4j.wml.hpsmeasure; import org.docx4j.wml.objectfactory; import org.docx4j.wml.p; import org.docx4j.wml.r; org.docx4j.wml.rpr; import org.jfree.chart.chartfactory; import org.jfree.chart.chartutilities; import org.jfree.chart.jfreechart; import org.jfree.chart.labels.labels.standardPiesectionLabelGenerator; import org.jfree.chart.pieplot org.jfree.chart.title.texttitle; import org.jfree.data.general.defaultpiedataset; import com.aisino.qysds.common.constant.errorconstants; import com.aisino.qysds.common.exception.sysection; import com.aisporcic.qysdd.service.sexorccds com.google.common.collect.maps; public class ExportBgserviceimpl {public static void main (String [] args)은 예외 {map <string, String> map = maps.newhashmap (); map.put ( "$ 1", "1231"); xwpfdocument 문서 = 새로운 xwpfdocument (poixmldocument.openpackage ( "d : //tp//test.docx"); 반복자 <xwpfparagraph> itpara = document.getParagraphsiterator (); while (itpara.hasnext ()) {xwpfparagraph 단락 = (xwpfparagraph) itpara.next (); List <xwpfrun> runs = paragraph.getRuns (); for (int i = 0; i <runs.size (); i ++) {string oneparastring = runs.get (i) .getText (runs.get (i) .getTextPosition ()); for (map.Entry <string, string> entry : map.entryset ()) {if (oneparastring.equals (enther.getKey ())) {oneParastring = oneParastring.replace (enther.getKey (), enther.getValue ()); }} runs.get (i) .settext (oneparastring, 0); }} fileoutputStream exstream = null; Outstream = 새 FileOutputStream ( "D : //tp//test1.docx"); document.write (아웃스트림); outstream.close (); // ------------------------------------------- 这块为生成图片 插入图片 插入图片 defaultpiedataset dataset = new defaultpiedataset (); DataSet.setValue ( "修改类", 1); DataSet.setValue ( "提示类", 1); DataSet.setValue ( "校验不通过", 3); DataSet.setValue ( "正常类", 3); JFREECHART 차트 = ChartFactory.CreatePieChart3d (NULL, DATASET, TRUE, FALSE, FALSE); Chart.getLegend (). setitemFont (new Font ( "黑体", font.bold, 15)); // 设置图例类别字体 // TextTitle Title = New TextTitle (titlestring); // title.setfont (new font ( "黑体", font.italic, 20)); // 设置标题字体 // chart.settitle (title); pieplot pieplot = (pieplot) art.getPlot (); Decimalformat df = 새로운 십진형 ( "0.00%"); numberformat nf = numberformat.getInstance (); StandardPiesectionLabelGenerator generator = new StandardPiesectionLabelGenerator ( "{0} {2}", NF, DF); // 获得 获得 获得 표준 piesectionLabelGenerator 对象, // {0} 表示 表示 名 名 {1} 表示 섹션 的值} {2} {pieplot. pieplot.setLabelfont (새 글꼴 ( "黑体", font.italic, 15)); // 设置饼图中类别字体 pieplot.setnodatamessage ( "此时并没有任何数据可用"); pieplot.setcircular (false); pieplot.setlabelgap (0.02d); pieplot.setignorenullvalues (true); // 设置不显示空位 pieplot.setignorezerovalues (true); // 设置不显示负值或零值 string fname = "pie.png"; 파일 = 새 파일 ( "d : // tp", fname); if (file.exists ()) {file.delete (); } try {ChartUtilities.sevechartaspng (파일, 차트, 800, 500); file2 = 새 파일 ( "d : //tp//test1.docx"); WordProcessingMlPackage wpackage = WordProcessingMlPackage.load (new FileInputStream (file2)); mainDocumentPart mainDocumentPart = wpackage.getMainDocumentPart (); 문서 wmldoc = (문서) mainDocumentPart.getJaxBelement (); 바디 바디 = wmldoc.getBody (); // 提取正文中所有段落 list <bood> 단락 = body.getContent (); // 提取书签并创建书签的游标 RangeFinder RT = New RangeFinder ( "CTBookMark", "CTMARKUPRANGE"); New Traversalutil (단락, RT); for (ctbookmark bm : rt.getStarts ()) {if (bm.getName (). equals ( "test")) {// 这里的 test 为 Word 文档中预设的 书签名 inputStream inputStream = new FileInputStream (file); 바이트 [] bytes = ioutils.tobytearray (inputstream); BinaryPartAbStractImage ImagePart = BinaryPartAbStractImage.CreateImagePart (wpackage, bytes); 인라인 인라인 = imagePart.CreateImageInline (NULL, NULL, 0, 1, FALSE, 10000); // 这里的 100000 不是正常屏幕大小 不是正常屏幕大小, 用于设置插入图片的大小 p p = (p) (bm. getParent ()); ObjectFactory Factory = New ObjectFactory (); // r ,, 然而我并不知道具体啥意思, 估计这个要好好去看看 Ooxml 才知道 r run = factory.creater (); // 그림 드로잉 드로잉 = 팩토리 .CreatedRawing (); drawing.getanchororInline (). Add (인라인); run.getContent (). add (도면); p.getContent (). add (run); }} wpackage.save (new FileOutputStream (새 파일 ( "d : //tp//test1.docx")); } catch (ioException e) {}}}最后效果图如下 :
总结
以上所述是小编给大家介绍的 java a 단어 文档文字并指定位置插入图片 文档文字并指定位置插入图片 文档文字并指定位置插入图片, 希望对大家有所帮助, 如果大家有任何疑问请给我留言, 小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持! 小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!