easypoi导出word文档

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);
        }
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值