1. maven 相关依赖 和模板
org.apache.poi
poi-ooxml
3.15-beta2
org.apache.poi
ooxml-schemas
1.1
2. 工具类中的方法
// 给生成的表格设置样式
public static void setCellWitchAndAlign(XWPFTableCell cell,String width,STVerticalJc.Enum typeEnum,STJc.Enum align){
CTTc cttc = cell.getCTTc();
CTTcPr ctPr = cttc.addNewTcPr();
ctPr.addNewVAlign().setVal(typeEnum);
cttc.getPList().get(0).addNewPPr().addNewJc().setVal(align);
CTTblWidth ctTblWidth = (ctPr != null && ctPr.isSetTcW() && ctPr.getTcW()!=null &&ctPr.getTcW().getW()!=null) ? ctPr.getTcW(): ctPr.addNewTcW();
if(StringUtils.isNotBlank(width)){
ctTblWidth.setW(new BigInteger(width));
ctTblWidth.setType(STTblWidth.DXA);
}
}
/**
* 生成word文档下载
*/
public static void DownloadWord(HttpServletResponse response,List list, Map map,String file){
XWPFDocument document = null;
ServletOutputStream servletOS = null;
ByteArrayOutputStream ostream = null;
//添加表格
try {
servletOS = response.getOutputStream();
ostream = new ByteArrayOutputStream();
document = new XWPFDocument(POIXMLDocument.openPackage(file));// 生成word文档并读取模板
/* ***********************比赛报名表基本信息******************************begin */
Iterator it = document.getTablesIterator();
//表格内容替换添加
while(it.hasNext()){
XWPFTable table = it.next();
int rcount = table.getNumberOfRows();
for(int i =0 ;i < rcount;i++){
XWPFTableRow row = table.getRow(i);
List cells = row.getTableCells();
for (XWPFTableCell cell : cells){
for(Entry e : map.entrySet()){
if (cell.getText().equals(e.getKey())){
//删除原来内容
cell.removeParagraph(0);
//写入新内容
cell.setText((String) e.getValue());
<