1、Word生成
package com.tepper.common.util;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.poi.POIXMLDocument;
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
/**
* Word写入器
*
* DocWriter
*
* @author 潘广伟
* @Email p_3er@qq.com
* @Date 2015-3-25 上午8:53:17
*
* @version 1.0.0
*
*/
public class DocWriter {
/**
* 根据模板生成word文档
* createByTemplate
*
* @param srcPath
* @param map
* @return
* @exception
* @since 1.0.0
*/
public static XWPFDocument createByTemplate(String srcPath,Map<String, String> map) {
XWPFDocument document = null;
try {
document = new XWPFDocument(POIXMLDocument.openPackage(srcPath));
Iterator it = document.getTablesIterator();
while (it.hasNext()) {
XWPFTable table = (XWPFTable) it.next();
int rcount = table.getNumberOfRows();
for (int i = 0; i < rcount; i++) {
XWPFTableRow row = table.getRow(i);
List<XWPFTableCell> cells = row.getTableCells();
for (XWPFTableCell cell : cells) {
for (Entry<String, String> e : map.entrySet()) {
if (cell.getText().equals(e.getKey())) {
/**
* 清空原来的字符
*/
cell.removeParagraph(0);
/**
* 新的字符及样式
*/
XWPFParagraph paragraph = new XWPFParagraph(cell.getCTTc().addNewP(), cell);
paragraph.setAlignment(ParagraphAlignment.LEFT);
XWPFRun run = paragraph.createRun();
run.setFontSize(14);
run.setFontFamily("宋体");
run.setText(e.getValue());
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return document;
}
}
2、通过response导出
Map<String, String> map = new HashMap<String, String>();
map.put("${invoiceaccepter}", request.getParameter("invoiceaccepter"));
map.put("${amountPrice}",request.getParameter("amountPrice")+"万");
map.put("${invoicenum}","NO."+request.getParameter("invoicenum"));
map.put("${count}",request.getParameter("count"));
map.put("${invoiceTime}",request.getParameter("invoiceTime"));
String srcPath = request.getSession().getServletContext().getRealPath("/") + "print_temp/invoice.docx";
XWPFDocument document = DocWriter.createByTemplate(srcPath, map);
response.setHeader("Content-disposition", "attachment;filename=ReturnReceipt.doc");
document.write(response.getOutputStream());