java导出word文档
需要的pom依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>ooxml-schemas</artifactId>
<version>1.1</version>
</dependency>
第一种类型
package com.ims.common.utils;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class ExportUtil1 {
public static void main(String[] args) throws IOException {
FileOutputStream out = new FileOutputStream(new File("E:\\create_table.docx"));
String title = "Xxx-xx测试报告";
String[] value_columns_home = new String[]{"Xx 型号:", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"};
List<List<String>> contenthome = new ArrayList<>();
List<List<String>> headhome = new ArrayList<>();
List<String> rowhome1 = new ArrayList<>();
rowhome1.add("Xx 类型:");
rowhome1.add(" ");
contenthome.add(rowhome1);
List<String> rowhome2 = new ArrayList<>();
rowhome2.add("Xx 编号:");
rowhome2.add(" ");
contenthome.add(rowhome2);
List<String> rowhome3 = new ArrayList<>();
rowhome3.add("测试单元:");
rowhome3.add(" ");
contenthome.add(rowhome3);
List<String> rowhome4 = new ArrayList<>();
rowhome4.add("测试人员:");
rowhome4.add(" ");
contenthome.add(rowhome4);
List<String> rowhome5 = new ArrayList<>();
rowhome5.add("地点:");
rowhome5.add(" ");
contenthome.add(rowhome5);
List<String> rowhome6 = new ArrayList<>();
rowhome6.add("日期:");
rowhome6.add(" ");
contenthome.add(rowhome6);
headhome.addAll(contenthome);
String[] value_columns_body = new String[]{"序号", "项目名称", "技术要求", "测量值", "单位", "结论"};
List<List<String>> contentbody = new ArrayList<List<String>>();
List<List<String>> head_body = new ArrayList<List<String>>();
List<String> rowbody = new ArrayList<String>();
rowbody.add("0");
rowbody.add("1");
rowbody.add("2");
rowbody.add("3");
rowbody.add("4");
rowbody.add("5");
contentbody.add(rowbody);
List<String> rowbody1 = new ArrayList<String>();
rowbody1.add("a");
rowbody1.add("b");
rowbody1.add("c");
rowbody1.add("d");
rowbody1.add("e");
rowbody1.add("f");
contentbody.add(rowbody1);
List<String> rowbody2 = new ArrayList<String>();
rowbody2.add("a");
rowbody2.add("b");
rowbody2.add("c");
rowbody2.add("d");
rowbody2.add("e");
rowbody2.add("f");
contentbody.add(rowbody2);
head_body.addAll(contentbody);
XWPFDocument document = exportWord(title, value_columns_home, headhome, value_columns_body, head_body);
document.write(out);
out.close();
System.out.println("create_table document written success.");
}
public static XWPFDocument exportWord(String title, String[] value_columns_home, List<List<String>> list_home,
String[] value_columns_body, List<List<String>> list_body) {
XWPFDocument doc = new XWPFDocument();
XWPFParagraph titleParagreph0 = doc.createParagraph();
XWPFRun run = titleParagreph0.createRun();
for (int i = 0; i < 6; i++) {
run.setText("\r");
}
XWPFParagraph titleParagraph = doc.createParagraph();
titleParagraph.setAlignment(ParagraphAlignment.CENTER);
XWPFRun titleParagraphRun = titleParagraph.createRun();
titleParagraphRun.setText(title);
titleParagraphRun.setColor("000000");
titleParagraphRun.setFontSize(22);
titleParagraphRun.setText("\r");
titleParagraphRun.setText("\r");
titleParagraphRun.setText("\r");
createHome(doc, value_columns_home, list_home);
createNextPage(title, doc);
createBody(doc, value_columns_body, list_body);
return doc;
}
public static void createHome(XWPFDocument doc, String[] value_columns_home, List<List<String>> lists_home) {
XWPFTable infoTable = doc.createTable();
infoTable.getCTTbl().getTblPr().unsetTblBorders();
CTTbl ctTbl = infoTable.getCTTbl();
CTTblGrid ctTblGrid = ctTbl.addNewTblGrid();
int[] colWidths = new int[]{1800, 5000};
for (int i : colWidths) {
CTTblGridCol gridCol = ctTblGrid.addNewGridCol();
gridCol.setW(new BigInteger(i+""));
}
XWPFTableRow comTableRowOne = infoTable.getRow(0);
XWPFParagraph cellParagraph = comTableRowOne.getCell(0).getParagraphs().get(0);
cellParagraph.setAlignment(ParagraphAlignment.RIGHT);
XWPFRun cellParagraphRun = cellParagraph.createRun();
cellParagraphRun.setFontSize(16);
cellParagraphRun.setBold(true);
cellParagraphRun.setText(value_columns_home[0]);
for (int i = 1; i < value_columns_home.length; i++) {
cellParagraph = comTableRowOne.addNewTableCell().getParagraphs().get(0);
cellParagraph.setAlignment(ParagraphAlignment.CENTER);
cellParagraphRun = cellParagraph.createRun();
cellParagraphRun.setFontSize(16);
cellParagraphRun.setBold(true);
cellParagraphRun.setText(value_columns_home[i]);
}
for (int i = 0; i < lists_home.size(); i++) {
XWPFTableRow rowContent = infoTable.createRow();
for (int j = 0; j < lists_home.get(i).size(); j++) {
XWPFParagraph cellParagrephC = rowContent.getCell(j).getParagraphs().get(0);
if (j % 2 == 0) {
cellParagrephC.setAlignment(ParagraphAlignment.RIGHT);
XWPFRun cellParagrephCRun = cellParagrephC.createRun();
cellParagrephCRun.setFontSize(16);
cellParagrephCRun.setBold(true);
cellParagrephCRun.setText(lists_home.get(i).get(j) + "");
} else {
cellParagrephC.setAlignment(ParagraphAlignment.CENTER);
XWPFRun cellParagrephCRun = cellParagrephC.createRun();
cellParagrephCRun.setFontSize(16);
cellParagrephCRun.setBold(true);
cellParagrephCRun.setText(lists_home.get(i).get(j) + "");
}
}
}
}
public static void createNextPage(String title, XWPFDocument doc) {
XWPFParagraph paragraph = doc.createParagraph();
paragraph.setPageBreak(true);
paragraph.setAlignment(ParagraphAlignment.CENTER);
XWPFRun paragraphRun = paragraph.createRun();
paragraphRun.setText(title);
paragraphRun.setColor("000000");
paragraphRun.setFontSize(16);
}
public static void createBody(XWPFDocument doc, String[] value_columns_body, List<List<String>> lists_body) {
XWPFTable ComTable = doc.createTable();
CTTblWidth comTableWidth = ComTable.getCTTbl().addNewTblPr().addNewTblW();
comTableWidth.setType(STTblWidth.DXA);
comTableWidth.setW(BigInteger.valueOf(8327));
XWPFTableRow comTableRowOne = ComTable.getRow(0);
XWPFParagraph cellParagraph = comTableRowOne.getCell(0).getParagraphs().get(0);
cellParagraph.setAlignment(ParagraphAlignment.CENTER);
XWPFRun cellParagraphRun = cellParagraph.createRun();
cellParagraphRun.setFontSize(16);
cellParagraphRun.setBold(true);
cellParagraphRun.setText(value_columns_body[0]);
for (int i = 1; i < value_columns_body.length; i++) {
cellParagraph = comTableRowOne.addNewTableCell().getParagraphs().get(0);
cellParagraph.setAlignment(ParagraphAlignment.CENTER);
cellParagraphRun = cellParagraph.createRun();
cellParagraphRun.setFontSize(16);
cellParagraphRun.setBold(true);
cellParagraphRun.setText(value_columns_body[i]);
}
for (int i = 0; i < lists_body.size(); i++) {
XWPFTableRow rowContent = ComTable.createRow();
for (int j = 0; j < lists_body.get(i).size(); j++) {
XWPFParagraph cellParagrephC = rowContent.getCell(j).getParagraphs().get(0);
if (j != 1 && j != 2) {
cellParagrephC.setAlignment(ParagraphAlignment.CENTER);
}
XWPFRun cellParagrephCRun = cellParagrephC.createRun();
cellParagrephCRun.setFontSize(16);
cellParagrephCRun.setText(lists_body.get(i).get(j) + "");
}
}
}
public static boolean isNumeric(String str) {
if (str.indexOf(".") > 0) {
return false;
}
return true;
}
public static List<List<String>> getCzzscaList(String jnjhzh, String trimpro, String temp) {
List<List<String>> list = new ArrayList<List<String>>();
List<String> l1 = new ArrayList<String>();
l1.add("");
l1.add("年度总计");
l1.add("");
l1.add("");
l1.add("");
l1.add("");
l1.add(jnjhzh);
l1.add("");
l1.add("");
l1.add("");
list.add(l1);
List<String> l2 = new ArrayList<String>();
l2.add("");
l2.add("搜索总计");
l2.add("");
l2.add("");
l2.add("");
l2.add("");
l2.add("");
l2.add("");
l2.add("");
l2.add("");
list.add(l2);
return list;
}
}
第二种类型
package com.ims.common.utils;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class ExportUtil {
public static void main(String[] args) throws IOException {
FileOutputStream out = new FileOutputStream(new File("E:\\create_table.docx"));
SimpleDateFormat df = new SimpleDateFormat("yyyy");
long date = Long.parseLong(df.format(new Date()));
String title = "Xxx-xx测试报告";
String[] value_columns = new String[]{"序号", "项目名称", "技术要求", "测量值", "单位", "结论"};
int[] colWidths = new int[]{600, 3000, 500, 500, 800, 800, 800, 3000, 800, 1500};
List<List<String>> content = new ArrayList<List<String>>();
List<List<String>> head = new ArrayList<List<String>>();
List<String> row = new ArrayList<String>();
row.add("0");
row.add("1");
row.add("2");
row.add("3");
row.add("4");
row.add("5");
content.add(row);
List<String> row1 = new ArrayList<String>();
row1.add("a");
row1.add("b");
row1.add("c");
row1.add("d");
row1.add("e");
row1.add("f");
content.add(row1);
head.addAll(content);
XWPFDocument document = exportWord(title, value_columns, head);
document.write(out);
out.close();
System.out.println("create_table document written success.");
}
public static XWPFDocument exportWord(String title, String[] value_columns, List<List<String>> list) {
XWPFDocument doc = new XWPFDocument();
XWPFParagraph titleParagraph = doc.createParagraph();
titleParagraph.setAlignment(ParagraphAlignment.CENTER);
XWPFRun titleParagraphRun = titleParagraph.createRun();
titleParagraphRun.setText(title);
titleParagraphRun.setColor("000000");
titleParagraphRun.setFontSize(22);
XWPFTable ComTable = doc.createTable();
CTTblWidth comTableWidth = ComTable.getCTTbl().addNewTblPr().addNewTblW();
comTableWidth.setType(STTblWidth.DXA);
comTableWidth.setW(BigInteger.valueOf(8327));
XWPFTableRow rowHead = ComTable.getRow(0);
XWPFParagraph cellParagraph = rowHead.getCell(0).getParagraphs().get(0);
cellParagraph.setAlignment(ParagraphAlignment.CENTER);
XWPFRun cellParagraphRun = cellParagraph.createRun();
cellParagraphRun.setFontSize(10);
cellParagraphRun.setBold(true);
cellParagraphRun.setText(value_columns[0]);
for (int i = 1; i < value_columns.length; i++) {
if (value_columns[i].indexOf("增减") > -1) {
cellParagraph = rowHead.addNewTableCell().getParagraphs().get(0);
cellParagraph.setAlignment(ParagraphAlignment.CENTER);
cellParagraphRun = cellParagraph.createRun();
cellParagraphRun.setFontSize(10);
cellParagraphRun.setBold(true);
cellParagraphRun.setText("增减(+ / -)");
} else {
cellParagraph = rowHead.addNewTableCell().getParagraphs().get(0);
cellParagraph.setAlignment(ParagraphAlignment.CENTER);
cellParagraphRun = cellParagraph.createRun();
cellParagraphRun.setFontSize(10);
cellParagraphRun.setBold(true);
cellParagraphRun.setText(value_columns[i]);
}
}
int rows = list.size();
for (int i = 0; i < rows; i++) {
XWPFTableRow rowsContent = ComTable.createRow();
for (int j = 0; j < list.get(i).size(); j++) {
XWPFParagraph cellParagraphC = rowsContent.getCell(j).getParagraphs().get(0);
if (j!=1&&j!=2){
cellParagraphC.setAlignment(ParagraphAlignment.CENTER);
}
XWPFRun cellParagraphRunC = cellParagraphC.createRun();
cellParagraphRunC.setFontSize(10);
cellParagraphRunC.setText(list.get(i).get(j) + "");
}
}
if (rows == 0) {
for (int i = 0; i < value_columns.length; i++) {
XWPFTableCell cell = ComTable.getRow(0).getCell(i);
cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
}
} else {
for (int i = 0; i <= rows; i++) {
for (int j = 0; j < list.get(0).size(); j++) {
XWPFTableCell cell = ComTable.getRow(i).getCell(j);
cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
}
}
}
return doc;
}
public static boolean isNumeric(String str) {
if (str.indexOf(".") > 0) {
return false;
}
return true;
}
public static List<List<String>> getCzzscaList(String jnjhzh, String trimpro, String temp) {
List<List<String>> list = new ArrayList<List<String>>();
List<String> l1 = new ArrayList<String>();
l1.add("");
l1.add("年度总计");
l1.add("");
l1.add("");
l1.add("");
l1.add("");
l1.add(jnjhzh);
l1.add("");
l1.add("");
l1.add("");
list.add(l1);
List<String> l2 = new ArrayList<String>();
l2.add("");
l2.add("搜索总计");
l2.add("");
l2.add("");
l2.add("");
l2.add("");
l2.add("");
l2.add("");
l2.add("");
l2.add("");
list.add(l2);
return list;
}
}
第三种类型
package com.ims.common.utils;
import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
import java.io.File;
import java.io.FileOutputStream;
import java.math.BigInteger;
public class WordExportUtil {
public static void main(String[] args) throws Exception {
XWPFDocument document = new XWPFDocument();
FileOutputStream out = new FileOutputStream(new File("E:\\create_table.docx"));
XWPFParagraph titleParagraph = document.createParagraph();
titleParagraph.setAlignment(ParagraphAlignment.CENTER);
XWPFRun titleParagraphRun = titleParagraph.createRun();
titleParagraphRun.setText("Java PoI");
titleParagraphRun.setColor("000000");
titleParagraphRun.setFontSize(20);
XWPFParagraph firstParagraph = document.createParagraph();
XWPFRun run = firstParagraph.createRun();
run.setText("Java POI 生成word文件。");
run.setColor("696969");
run.setFontSize(16);
CTShd cTShd = run.getCTR().addNewRPr().addNewShd();
cTShd.setVal(STShd.CLEAR);
cTShd.setFill("97FFFF");
XWPFParagraph paragraph1 = document.createParagraph();
XWPFRun paragraphRun1 = paragraph1.createRun();
paragraphRun1.setText("\r");
XWPFTable infoTable = document.createTable();
infoTable.getCTTbl().getTblPr().unsetTblBorders();
CTTblWidth infoTableWidth = infoTable.getCTTbl().addNewTblPr().addNewTblW();
infoTableWidth.setType(STTblWidth.DXA);
infoTableWidth.setW(BigInteger.valueOf(9072));
XWPFTableRow infoTableRowOne = infoTable.getRow(0);
infoTableRowOne.getCell(0).setText("职位");
infoTableRowOne.addNewTableCell().setText(": Java 开发工程师");
XWPFTableRow infoTableRowTwo = infoTable.createRow();
infoTableRowTwo.getCell(0).setText("姓名");
infoTableRowTwo.getCell(1).setText(": seawater");
XWPFTableRow infoTableRowThree = infoTable.createRow();
infoTableRowThree.getCell(0).setText("生日");
infoTableRowThree.getCell(1).setText(": xxx-xx-xx");
XWPFTableRow infoTableRowFour = infoTable.createRow();
infoTableRowFour.getCell(0).setText("性别");
infoTableRowFour.getCell(1).setText(": 男");
XWPFTableRow infoTableRowFive = infoTable.createRow();
infoTableRowFive.getCell(0).setText("现居地");
infoTableRowFive.getCell(1).setText(": xx");
XWPFParagraph paragraph = document.createParagraph();
XWPFRun paragraphRun = paragraph.createRun();
paragraphRun.setText("\r");
XWPFTable ComTable = document.createTable();
CTTblWidth comTableWidth = ComTable.getCTTbl().addNewTblPr().addNewTblW();
comTableWidth.setType(STTblWidth.DXA);
comTableWidth.setW(BigInteger.valueOf(9072));
XWPFTableRow comTableRowOne = ComTable.getRow(0);
comTableRowOne.getCell(0).setText("开始时间");
comTableRowOne.addNewTableCell().setText("结束时间");
comTableRowOne.addNewTableCell().setText("公司名称");
comTableRowOne.addNewTableCell().setText("title");
XWPFTableRow comTableRowTwo = ComTable.createRow();
comTableRowTwo.getCell(0).setText("2016-09-06");
comTableRowTwo.getCell(1).setText("至今");
comTableRowTwo.getCell(2).setText("seawater");
comTableRowTwo.getCell(3).setText("Java开发工程师");
XWPFTableRow comTableRowThree = ComTable.createRow();
comTableRowThree.getCell(0).setText("2016-09-06");
comTableRowThree.getCell(1).setText("至今");
comTableRowThree.getCell(2).setText("seawater");
comTableRowThree.getCell(3).setText("Java开发工程师");
CTSectPr sectPr = document.getDocument().getBody().addNewSectPr();
XWPFHeaderFooterPolicy policy = new XWPFHeaderFooterPolicy(document, sectPr);
CTP ctpHeader = CTP.Factory.newInstance();
CTR ctrHeader = ctpHeader.addNewR();
CTText ctHeader = ctrHeader.addNewT();
String headerText = "Java POI create MS word file.";
ctHeader.setStringValue(headerText);
XWPFParagraph headerParagraph = new XWPFParagraph(ctpHeader, document);
headerParagraph.setAlignment(ParagraphAlignment.RIGHT);
XWPFParagraph[] parsHeader = new XWPFParagraph[1];
parsHeader[0] = headerParagraph;
policy.createHeader(XWPFHeaderFooterPolicy.DEFAULT, parsHeader);
CTP ctpFooter = CTP.Factory.newInstance();
CTR ctrFooter = ctpFooter.addNewR();
CTText ctFooter = ctrFooter.addNewT();
String footerText = "http://blog.csdn.net/zhouseawater";
ctFooter.setStringValue(footerText);
XWPFParagraph footerParagraph = new XWPFParagraph(ctpFooter, document);
headerParagraph.setAlignment(ParagraphAlignment.CENTER);
XWPFParagraph[] parsFooter = new XWPFParagraph[1];
parsFooter[0] = footerParagraph;
policy.createFooter(XWPFHeaderFooterPolicy.DEFAULT, parsFooter);
document.write(out);
out.close();
System.out.println("create_table document written success.");
}
}
完整pom文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<modelVersion>4.0.0</modelVersion>
<groupId>com.demodata</groupId>
<artifactId>sm</artifactId>
<packaging>jar</packaging>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>copy-webapp</id>
<phase>process-sources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<encoding>UTF-8</encoding>
<outputDirectory>${basedir}/target/classes/webapp</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/webapp</directory>
<includes>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>ims</finalName>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.ims.common.CoreConfig</mainClass>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resources>
</resources>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>jfinal-undertow</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>jfinal</artifactId>
<version>4.2</version>
</dependency>
<dependency>
<groupId>com.esen.jdbc</groupId>
<artifactId>oscarJDBC</artifactId>
<version>16</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
<dependency>
<groupId>it.sauronsoftware.cron4j</groupId>
<artifactId>cron4j</artifactId>
<version>2.2.5</version>
</dependency>
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
<dependency>
<groupId>commons-configuration</groupId>
<artifactId>commons-configuration</artifactId>
<version>1.6</version>
<exclusions>
<exclusion>
<artifactId>commons-beanutils</artifactId>
<groupId>commons-beanutils</groupId>
</exclusion>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
<exclusion>
<artifactId>commons-collections</artifactId>
<groupId>commons-collections</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>cos</artifactId>
<version>2017.5</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.17</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
<exclusions>
<exclusion>
<artifactId>commons-lang</artifactId>
<groupId>commons-lang</groupId>
</exclusion>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
<exclusion>
<artifactId>commons-beanutils</artifactId>
<groupId>commons-beanutils</groupId>
</exclusion>
<exclusion>
<artifactId>commons-collections</artifactId>
<groupId>commons-collections</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>15.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.36.Final</version>
</dependency>
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>ooxml-schemas</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.26</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>com.github.liuyueyi.quick-media</groupId>
<artifactId>qrcode-plugin</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
</project>
![在这里插入图片描述](https://img-blog.csdnimg.cn/48eef07a337b4081b918dd1c9731d4e3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOaYr1FR5ZWK,size_20,color_FFFFFF,t_70,g_se,x_16)