maven的pom
<dependency> <groupId>org.apache.poi</groupId> <artifactId>ooxml-schemas</artifactId> <version>1.1</version> </dependency> <!-- https://mvnrepository.com/artifact/fr.opensagres.xdocreport/org.apache.poi.xwpf.converter.core --> <dependency> <groupId>fr.opensagres.xdocreport</groupId> <artifactId>org.apache.poi.xwpf.converter.core</artifactId> <version>1.0.6</version> </dependency>
Java代码
1 package com.seawater.controller; 2 3 import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy; 4 import org.apache.poi.xwpf.usermodel.*; 5 import org.openxmlformats.schemas.wordprocessingml.x2006.main.*; 6 7 import java.io.File; 8 import java.io.FileOutputStream; 9 import java.math.BigInteger; 10 11 12 /** 13 * Created by zhouhs on 2017/1/9. 14 */ 15 public class WordExportController { 16 17 public static void main(String[] args)throws Exception { 18 //Blank Document 19 XWPFDocument document= new XWPFDocument(); 20 21 //Write the Document in file system 22 FileOutputStream out = new FileOutputStream(new File("create_table.docx")); 23 24 25 //添加标题 26 XWPFParagraph titleParagraph = document.createParagraph(); 27 //设置段落居中 28 titleParagraph.setAlignment(ParagraphAlignment.CENTER); 29 30 XWPFRun titleParagraphRun = titleParagraph.createRun(); 31 titleParagraphRun.setText("Java PoI"); 32 titleParagraphRun.setColor("000000"); 33 titleParagraphRun.setFontSize(20); 34 35 36 //段落 37 XWPFParagraph firstParagraph = document.createParagraph(); 38 XWPFRun run = firstParagraph.createRun(); 39 run.setText("Java POI 生成word文件。"); 40 run.setColor("696969"); 41 run.setFontSize(16); 42 43 //设置段落背景颜色 44 CTShd cTShd = run.getCTR().addNewRPr().addNewShd(); 45 cTShd.setVal(STShd.CLEAR); 46 cTShd.setFill("97FFFF"); 47 48 49 //换行 50 XWPFParagraph paragraph1 = document.createParagraph(); 51 XWPFRun paragraphRun1 = paragraph1.createRun(); 52 paragraphRun1.setText("\r"); 53 54 55 //基本信息表格 56 XWPFTable infoTable = document.createTable(); 57 //去表格边框 58 infoTable.getCTTbl().getTblPr().unsetTblBorders(); 59 60 61 //列宽自动分割 62 CTTblWidth infoTableWidth = infoTable.getCTTbl().addNewTblPr().addNewTblW(); 63 infoTableWidth.setType(STTblWidth.DXA); 64 infoTableWidth.setW(BigInteger.valueOf(9072)); 65 66 67 //表格第一行 68 XWPFTableRow infoTableRowOne = infoTable.getRow(0); 69 infoTableRowOne.getCell(0).setText("职位"); 70 infoTableRowOne.addNewTableCell().setText(": Java 开发工程师"); 71 72 //表格第二行 73 XWPFTableRow infoTableRowTwo = infoTable.createRow(); 74 infoTableRowTwo.getCell(0).setText("姓名"); 75 infoTableRowTwo.getCell(1).setText(": seawater"); 76 77 //表格第三行 78 XWPFTableRow infoTableRowThree = infoTable.createRow(); 79 infoTableRowThree.getCell(0).setText("生日"); 80 infoTableRowThree.getCell(1).setText(": xxx-xx-xx"); 81 82 //表格第四行 83 XWPFTableRow infoTableRowFour = infoTable.createRow(); 84 infoTableRowFour.getCell(0).setText("性别"); 85 infoTableRowFour.getCell(1).setText(": 男"); 86 87 //表格第五行 88 XWPFTableRow infoTableRowFive = infoTable.createRow(); 89 infoTableRowFive.getCell(0).setText("现居地"); 90 infoTableRowFive.getCell(1).setText(": xx"); 91 92 93 //两个表格之间加个换行 94 XWPFParagraph paragraph = document.createParagraph(); 95 XWPFRun paragraphRun = paragraph.createRun(); 96 paragraphRun.setText("\r"); 97 98 99 100 //工作经历表格 101 XWPFTable ComTable = document.createTable(); 102 103 104 //列宽自动分割 105 CTTblWidth comTableWidth = ComTable.getCTTbl().addNewTblPr().addNewTblW(); 106 comTableWidth.setType(STTblWidth.DXA); 107 comTableWidth.setW(BigInteger.valueOf(9072)); 108 109 //表格第一行 110 XWPFTableRow comTableRowOne = ComTable.getRow(0); 111 comTableRowOne.getCell(0).setText("开始时间"); 112 comTableRowOne.addNewTableCell().setText("结束时间"); 113 comTableRowOne.addNewTableCell().setText("公司名称"); 114 comTableRowOne.addNewTableCell().setText("title"); 115 116 //表格第二行 117 XWPFTableRow comTableRowTwo = ComTable.createRow(); 118 comTableRowTwo.getCell(0).setText("2016-09-06"); 119 comTableRowTwo.getCell(1).setText("至今"); 120 comTableRowTwo.getCell(2).setText("seawater"); 121 comTableRowTwo.getCell(3).setText("Java开发工程师"); 122 123 //表格第三行 124 XWPFTableRow comTableRowThree = ComTable.createRow(); 125 comTableRowThree.getCell(0).setText("2016-09-06"); 126 comTableRowThree.getCell(1).setText("至今"); 127 comTableRowThree.getCell(2).setText("seawater"); 128 comTableRowThree.getCell(3).setText("Java开发工程师"); 129 130 131 CTSectPr sectPr = document.getDocument().getBody().addNewSectPr(); 132 XWPFHeaderFooterPolicy policy = new XWPFHeaderFooterPolicy(document, sectPr); 133 134 //添加页眉 135 CTP ctpHeader = CTP.Factory.newInstance(); 136 CTR ctrHeader = ctpHeader.addNewR(); 137 CTText ctHeader = ctrHeader.addNewT(); 138 String headerText = "Java POI create MS word file."; 139 ctHeader.setStringValue(headerText); 140 XWPFParagraph headerParagraph = new XWPFParagraph(ctpHeader, document); 141 //设置为右对齐 142 headerParagraph.setAlignment(ParagraphAlignment.RIGHT); 143 XWPFParagraph[] parsHeader = new XWPFParagraph[1]; 144 parsHeader[0] = headerParagraph; 145 policy.createHeader(XWPFHeaderFooterPolicy.DEFAULT, parsHeader); 146 147 148 //添加页脚 149 CTP ctpFooter = CTP.Factory.newInstance(); 150 CTR ctrFooter = ctpFooter.addNewR(); 151 CTText ctFooter = ctrFooter.addNewT(); 152 String footerText = "http://blog.csdn.net/zhouseawater"; 153 ctFooter.setStringValue(footerText); 154 XWPFParagraph footerParagraph = new XWPFParagraph(ctpFooter, document); 155 headerParagraph.setAlignment(ParagraphAlignment.CENTER); 156 XWPFParagraph[] parsFooter = new XWPFParagraph[1]; 157 parsFooter[0] = footerParagraph; 158 policy.createFooter(XWPFHeaderFooterPolicy.DEFAULT, parsFooter); 159 160 161 document.write(out); 162 out.close(); 163 System.out.println("create_table document written success."); 164 } 165 166 167 }
背景颜色
1 //设置段落背景颜色 2 CTShd cTShd = run.getCTR().addNewRPr().addNewShd(); 3 cTShd.setVal(STShd.CLEAR); 4 cTShd.setFill("97FFFF");