一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java 替換word文檔文字并指定位置插入圖片

Java 替換word文檔文字并指定位置插入圖片

2021-03-30 14:33紫薇帝星的故事 Java教程

這篇文章主要介紹了Java 替換word文檔文字,指定位置插入圖片功能,本文通過實例代碼給大家講解,需要的朋友可以參考下

先說下 需要的依賴包

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<dependency>
      <groupid>org.apache.poi</groupid>
      <artifactid>poi-excelant</artifactid>
      <version>3.12</version>
    </dependency>
    <dependency>
      <groupid>org.apache.poi</groupid>
      <artifactid>poi-scratchpad</artifactid>
      <version>3.12</version>
    </dependency>
    <dependency>
      <groupid>org.apache.poi</groupid>
      <artifactid>poi-ooxml</artifactid>
      <version>3.8</version>
    </dependency>
    <dependency>
      <groupid>org.apache.poi</groupid>
      <artifactid>poi-ooxml-schemas</artifactid>
      <version>3.8</version>
    </dependency>
<!-- 生成圖片-->
 <dependency>
    <groupid>org.jfree</groupid>
    <artifactid>jfreechart</artifactid>
    <version>1.0.19</version>
  </dependency>
  <dependency>
<!--支持插入圖片-->
    <groupid>org.docx4j</groupid>
    <artifactid>docx4j</artifactid>
    <version>3.3.1</version>
  </dependency>

示例,下圖

Java 替換word文檔文字并指定位置插入圖片

如上圖,需要替換的字符串地方“$1”為“1231”,在指定位置插入書簽,并命名“test”    ,插入的圖片如下

Java 替換word文檔文字并指定位置插入圖片

本人也沒太過多去研究,親測通過有效,在這分享下

1.demo

  1. import java.awt.font; 
  2. import java.io.file; 
  3. import java.io.fileinputstream; 
  4. import java.io.fileoutputstream; 
  5. import java.io.ioexception; 
  6. import java.io.inputstream; 
  7. import java.math.biginteger; 
  8. import java.text.decimalformat; 
  9. import java.text.numberformat; 
  10. import java.util.iterator; 
  11. import java.util.list; 
  12. import java.util.map; 
  13. import java.util.set; 
  14. import org.apache.poi.poixmldocument; 
  15. import org.apache.poi.openxml4j.opc.opcpackage; 
  16. import org.apache.poi.util.ioutils; 
  17. import org.apache.poi.xwpf.usermodel.xwpfdocument; 
  18. import org.apache.poi.xwpf.usermodel.xwpfparagraph; 
  19. import org.apache.poi.xwpf.usermodel.xwpfrun; 
  20. import org.docx4j.traversalutil; 
  21. import org.docx4j.dml.wordprocessingdrawing.inline; 
  22. import org.docx4j.finders.rangefinder; 
  23. import org.docx4j.openpackaging.packages.wordprocessingmlpackage; 
  24. import org.docx4j.openpackaging.parts.wordprocessingml.binarypartabstractimage; 
  25. import org.docx4j.openpackaging.parts.wordprocessingml.maindocumentpart; 
  26. import org.docx4j.wml.body; 
  27. import org.docx4j.wml.booleandefaulttrue; 
  28. import org.docx4j.wml.ctbookmark; 
  29. import org.docx4j.wml.color; 
  30. import org.docx4j.wml.document; 
  31. import org.docx4j.wml.drawing; 
  32. import org.docx4j.wml.hpsmeasure; 
  33. import org.docx4j.wml.objectfactory; 
  34. import org.docx4j.wml.p; 
  35. import org.docx4j.wml.r; 
  36. import org.docx4j.wml.rpr; 
  37. import org.jfree.chart.chartfactory; 
  38. import org.jfree.chart.chartutilities; 
  39. import org.jfree.chart.jfreechart; 
  40. import org.jfree.chart.labels.standardpiesectionlabelgenerator; 
  41. import org.jfree.chart.plot.pieplot; 
  42. import org.jfree.chart.title.texttitle; 
  43. import org.jfree.data.general.defaultpiedataset;import com.aisino.qysds.common.constant.errorconstants; 
  44. import com.aisino.qysds.common.exception.sysexception; 
  45. import com.aisino.qysds.service.iexportbgservice; 
  46. import com.google.common.collect.maps; 
  47. public class exportbgserviceimpl { 
  48. public static void main(string[] args) throws exception { 
  49.     map<string, string> map = maps.newhashmap(); 
  50.     map.put("$1""1231"); 
  51.     xwpfdocument document = new xwpfdocument(poixmldocument.openpackage("d:\tp\test.docx")); 
  52.     iterator<xwpfparagraph> itpara = document.getparagraphsiterator(); 
  53.     while (itpara.hasnext()) { 
  54.       xwpfparagraph paragraph = (xwpfparagraph) itpara.next(); 
  55.       list<xwpfrun> runs = paragraph.getruns(); 
  56.       for (int i = 0; i < runs.size(); i++) { 
  57.         string oneparastring = runs.get(i).gettext(runs.get(i).gettextposition()); 
  58.         for (map.entry<string, string> entry : map.entryset()) { 
  59.           if (oneparastring.equals(entry.getkey())) { 
  60.             oneparastring = oneparastring.replace(entry.getkey(), entry.getvalue()); 
  61.           } 
  62.         } 
  63.         runs.get(i).settext(oneparastring, 0); 
  64.       } 
  65.     } 
  66.     fileoutputstream outstream = null
  67.     outstream = new fileoutputstream("d:\tp\test1.docx"); 
  68.     document.write(outstream); 
  69.     outstream.close(); 
  70. //-----------------------------------這塊為生成圖片 和 插入圖片 
  71.     defaultpiedataset dataset = new defaultpiedataset(); 
  72.     dataset.setvalue("修改類", 1); 
  73.     dataset.setvalue("提示類", 1); 
  74.     dataset.setvalue("校驗不通過", 3); 
  75.     dataset.setvalue("正常類", 3); 
  76.     jfreechart chart = chartfactory.createpiechart3d(null, dataset, truefalsefalse); 
  77.     chart.getlegend().setitemfont(new font("黑體", font.bold, 15)); // 設置圖例類別字體 
  78.     // texttitle title = new texttitle(titlestring); 
  79.     // title.setfont(new font("黑體", font.italic, 20));//設置標題字體 
  80.     // chart.settitle(title); 
  81.     pieplot pieplot = (pieplot) chart.getplot(); 
  82.     decimalformat df = new decimalformat("0.00%"); 
  83.     numberformat nf = numberformat.getinstance(); 
  84.     standardpiesectionlabelgenerator generator = new standardpiesectionlabelgenerator("{0} {2}", nf, df);// 獲得standardpiesectionlabelgenerator對象,生成的格式, 
  85.     // {0}表示section名,{1}表示section的值,{2}表示百分比。可以自定義 
  86.     pieplot.setlabelgenerator(generator);// 設置百分比 
  87.     pieplot.setlabelfont(new font("黑體", font.italic, 15));// 設置餅圖中類別字體 
  88.     pieplot.setnodatamessage("此時并沒有任何數據可用"); 
  89.     pieplot.setcircular(false); 
  90.     pieplot.setlabelgap(0.02d); 
  91.     pieplot.setignorenullvalues(true);// 設置不顯示空位 
  92.     pieplot.setignorezerovalues(true);// 設置不顯示負值或零值 
  93.     string fname = "pie.png"
  94.     file file = new file("d:\tp", fname); 
  95.     if (file.exists()) { 
  96.       file.delete(); 
  97.     } 
  98.     try { 
  99.       chartutilities.savechartaspng(file, chart, 800, 500); 
  100.       file file2 = new file("d:\tp\test1.docx"); 
  101.       wordprocessingmlpackage wpackage = wordprocessingmlpackage.load(new fileinputstream(file2)); 
  102.       maindocumentpart maindocumentpart = wpackage.getmaindocumentpart(); 
  103.       document wmldoc = (document) maindocumentpart.getjaxbelement(); 
  104.       body body = wmldoc.getbody(); 
  105.       // 提取正文中所有段落 
  106.       list<object> paragraphs = body.getcontent(); 
  107.       // 提取書簽并創建書簽的游標 
  108.       rangefinder rt = new rangefinder("ctbookmark""ctmarkuprange"); 
  109.       new traversalutil(paragraphs, rt); 
  110.       for (ctbookmark bm : rt.getstarts()) { 
  111.         if (bm.getname().equals("test")) {// 這里的test為 word文檔中預設的 書簽名 
  112.           inputstream inputstream = new fileinputstream(file); 
  113.           byte[] bytes = ioutils.tobytearray(inputstream); 
  114.           binarypartabstractimage imagepart = binarypartabstractimage.createimagepart(wpackage, bytes); 
  115.           inline inline = imagepart.createimageinline(nullnull, 0, 1, false, 10000);//這里的100000不是正常屏幕大小,用于設置插入圖片的大小 
  116.           p p = (p) (bm.getparent()); 
  117.           objectfactory factory = new objectfactory(); 
  118.           // r對象是匿名的復雜類型,然而我并不知道具體啥意思,估計這個要好好去看看ooxml才知道 
  119.           r run = factory.creater(); 
  120.           // drawing理解為畫布? 
  121.           drawing drawing = factory.createdrawing(); 
  122.           drawing.getanchororinline().add(inline); 
  123.           run.getcontent().add(drawing); 
  124.           p.getcontent().add(run); 
  125.         } 
  126.       } 
  127.       wpackage.save(new fileoutputstream(new file("d:\tp\test1.docx"))); 
  128.     } catch (ioexception e) { 
  129.     } 
  130.   } 

最后效果圖如下:

Java 替換word文檔文字并指定位置插入圖片

總結

以上所述是小編給大家介紹的java 替換word文檔文字并指定位置插入圖片,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/zwdx/p/8403946.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: aⅴ天堂小视频 | 免费观看网站 | 日本小视频网站 | 欧美x×x| 色综合久久六月婷婷中文字幕 | 国产精品久久久久久久久久久搜索 | 欧美人鲁交大全 | 日韩免费视频一区 | 黑人干亚洲人 | 国产精品视频在这里有精品 | 爱草影院 | 99资源站 | 欧美生活一级片 | 被老头肉至怀孕小说 | www.亚洲视频.com | 国产日韩欧美色视频色在线观看 | 欧美高清在线 | 9久re热视频这里只有精品 | 日韩欧美综合在线二区三区 | 国产福利在线免费观看 | 海角社区在线登录 | 久久这里只有精品国产精品99 | 亚洲图片一区二区 | 日本精品一区二区在线播放 | 激情婷婷成人亚洲综合 | 逼123 | 恩不要好大好硬好爽3p | 无码欧美喷潮福利XXXX | 国产精品久久国产精品99盘 | 鬼吹灯之天星术免费观看 | 精品国产日韩一区三区 | 国产肥老上视频 | nxgx在线观看国产中文 | 欧美日本一道高清免费3区 欧美人做人爱a全程免费 | 美女视频在线观看视频 | 亚洲黄视频在线观看 | 高清在线免费观看 | 午夜福利理论片高清在线 | 久久热国产在线视频 | 国产精品青青青高清在线 | 日韩一区在线观看 |