easypoi导出word文档
public static void exportWord(List<ProjectWord> projectWords,String fileName, HttpServletResponse response) {
// projectWords 要导出的数据集合
try {
if(!projectWords.isEmpty()) {
List<XWPFDocument> wordList = new ArrayList<>();
for (ProjectWord o : projectWords) {
//转换为Map
Map<String, Object> map = BeanPlusUtil.beanToMap(o);
//模板文件位置
// XWPFDocument doc = WordExportUtil.exportWord07("E:\\MyWorkCode\\project.docx", map);
XWPFDocument doc = WordExportUtil.exportWord07("/data/manufacture/back/project.docx", map);
wordList.add(doc);
}
//把集合里面的word文档全部合并在一个文档
XWPFDocument word = WordUtil.mergeWord(wordList);
if (word != null) {
downLoadWord(fileName, response, word);
}
} else{ //空数据,下载一个空文件
Map map=new HashMap();
XWPFDocument doc = WordExportUtil.exportWord07("/data/manufacture/back/projectss.docx",map);
downLoadWord(fileName, response, doc);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* word文件合并
* @param wordList
* @return
* @throws Exception
*/
public static XWPFDocument mergeWord(List wordList) throws Exception{
if (CollectionUtils.isEmpty(wordList)) {
throw new RuntimeException(“待合并的word文档list为空”);
}
XWPFDocument doc = wordList.get(0);
int size = wordList.size();
if (size > 1) {
doc.createParagraph().setPageBreak(true);
for (int i = 1; i < size; i++) {
// 从第二个word开始合并
XWPFDocument nextPageDoc = wordList.get(i);
// 最后一页不需要设置分页符
if (i != (size-1)) {
nextPageDoc.createParagraph().setPageBreak(true);
}
appendBody(doc, nextPageDoc);
}
}
return doc;
}
/**
*下载 word文件
*/
private static void downLoadWord(String fileName, HttpServletResponse response, XWPFDocument word) {
try {
response.setCharacterEncoding("UTF-8");
// response.setHeader("content-Type", "application/vnd.ms-word");
// response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")+".doc" );
response.setContentType("application/x-msdownload;");
response.addHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode(fileName, "UTF-8") + ".docx");
word.write(response.getOutputStream());
} catch (IOException e) {
throw new RuntimeException(e);
}
}