poi设置word表格单元格宽度_POI 生成 word 文档 简单版(包括文字、表格、图片、字体样式设置等)...

POI 生成word 文档 一般有两种方法:

① word模板 生成word 文档 ;

② 写代码直接生成 word 文档;

我这里演示的是第二种方法,即写代码生成 word文档,不多说废话,直接代码;

/**

* 镇街日报导出word

*/

@RequestMapping(params = "exportWordForTownDaily")

public void exportWordForTownDaily(HttpServletResponse response ,String selectDate){

if(StringUtils.isNullOrEmpty(selectDate)){

return;

}

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

try{

sdf.parse(selectDate);

}catch (Exception e){

e.printStackTrace();

return;

}

CaseEntity entity = new CaseEntity();

entity.setRepotingTime_begin(selectDate + " 00:00:00");

entity.setRepotingTime_end(selectDate + " 23:59:59");

//获取镇街实际扣分

List caseEntityList = statisticsService.getTownActualScore(entity);

//获取各镇街情况

List> townDaily = statisticsService.townDaily(entity);

//格式化查询日期(年月日)

SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日");

try {

selectDate = sdf2.format(sdf.parse(selectDate));

} catch (ParseException e) {

e.printStackTrace();

}

//------------------------------------生成word文档------------------------------------------------

//创建document对象

XWPFDocumentUtil document = new XWPFDocumentUtil();

//创建标题段落

XWPFParagraph titleParag = document.createParagraph();

XWPFRun titleRun = titleParag.createRun();

titleRun.setText("镇街日报");

titleRun.setFontSize(20);

titleRun.setBold(true);//字体是否加粗

titleParag.setAlignment(ParagraphAlignment.LEFT);//段落居左

//换行

//XWPFParagraph brParagraph1 = document.createParagraph();

//XWPFRun brRun = brParagraph1.createRun();

//brRun.setText("\n");

//创建一个段落

XWPFParagraph p = document.createParagraph();

int rows = caseEntityList.size()+1;

int cols = 3;

//创建一个表格

XWPFTable table= document.createTable(rows, cols);

//表格属性

CTTblPr tablePr = table.getCTTbl().addNewTblPr();

//表格宽度

CTTblWidth width = tablePr.addNewTblW();

width.setW(BigInteger.valueOf(5000));

//设置表格宽度为非自动

width.setType(STTblWidth.DXA);

//表头行

XWPFTableRow headRow = table.getRow(0);

XWPFTableCell headCell0 = headRow.getCell(0);

XWPFTableCell headCell1 = headRow.getCell(1);

XWPFTableCell headCell2 = headRow.getCell(2);

p = headCell0.addParagraph();

XWPFRun headRun0 = p.createRun();

headRun0.setText("序号");

headRun0.setFontSize(12);

headRun0.setBold(true);//是否粗体

headCell0.setColor("DEDEDE");

//垂直居中

p.setVerticalAlignment(TextAlignment.CENTER);

//水平居中

p.setAlignment(ParagraphAlignment.CENTER);

p = headCell1.addParagraph();

XWPFRun headRun1 = p.createRun();

headRun1.setText("镇街");

headRun1.setFontSize(12);

headRun1.setBold(true);

headCell1.setColor("DEDEDE");

//垂直居中

p.setVerticalAlignment(TextAlignment.CENTER);

//水平居中

p.setAlignment(ParagraphAlignment.CENTER);

p = headCell2.addParagraph();

XWPFRun headRun2 = p.createRun();

headRun2.setFontSize(12);

headRun2.setText("总扣分");

headRun2.setBold(true);

headCell2.setColor("DEDEDE");

//垂直居中

p.setVerticalAlignment(TextAlignment.CENTER);

//水平居中

p.setAlignment(ParagraphAlignment.CENTER);

//表主体行

for(int i=0 ;i

CaseEntity caseEntity = caseEntityList.get(i);

XWPFTableRow contentRow = table.getRow(i+1);

XWPFTableCell cell0 = contentRow.getCell(0);

XWPFTableCell cell1 = contentRow.getCell(1);

XWPFTableCell cell2 = contentRow.getCell(2);

p = cell0.addParagraph();

XWPFRun pRun0=p.createRun();

pRun0.setText(i+1+"");

//垂直居中

cell0.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);

//水平居中

p.setAlignment(ParagraphAlignment.CENTER);

p = cell1.addParagraph();

XWPFRun pRun1=p.createRun();

pRun1.setText(caseEntity.getTownName());

//垂直居中

cell1.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);

//水平居中

p.setAlignment(ParagraphAlignment.CENTER);

p = cell2.addParagraph();

XWPFRun pRun2=p.createRun();

pRun2.setText(caseEntity.getTownActualScore().toString());

//垂直居中

cell2.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);

//水平居中

p.setAlignment(ParagraphAlignment.CENTER);

}

//-----------------------------各镇街情况------------------------------

//创建标题段落

XWPFParagraph title1 = document.createParagraph();

XWPFRun title1Run = title1.createRun();

title1Run.setText("\r各镇街比较严重的问题");

title1Run.setFontSize(20);

title1Run.setBold(true);

try {

for(Map townMap:townDaily){

CaseEntity townCase = (CaseEntity)townMap.get("townCase");

XWPFParagraph xwpfParagraph = document.createParagraph();

XWPFRun xwpfRun_town = xwpfParagraph.createRun();

XWPFRun xwpfRun = xwpfParagraph.createRun();

xwpfRun_town.setText(townCase.getTownName());

xwpfRun_town.setFontSize(14);

xwpfRun_town.setBold(true);

xwpfRun_town.setColor("00cc44");

xwpfRun.setText(","+selectDate+"当天扣分较多的问题有:");

xwpfRun.setFontSize(14);

xwpfRun.setBold(true);

List> caseInfoList = (List>)townMap.get("caseInfoList");

Integer no = 0;

for(Map map:caseInfoList){

CaseEntity caseInfo = (CaseEntity)map.get("caseInfo");

XWPFParagraph xwpfParagraph1 = document.createParagraph();

XWPFRun xwpfRun1 =xwpfParagraph1.createRun();

XWPFRun xwpfRun2 = xwpfParagraph1.createRun();

XWPFRun xwpfRun3 = xwpfParagraph1.createRun();

xwpfRun1.setText((++no)+"、");

xwpfRun2.setText(caseInfo.getProblemStreet());

xwpfRun3.setText(","+caseInfo.getProblemNotes());

xwpfRun1.setFontSize(14);

xwpfRun2.setFontSize(14);

xwpfRun2.setColor("4747d1");

xwpfRun3.setFontSize(14);

List fileList = (List)map.get("fileList");

for(AttachmentEntity at:fileList){

String mainPath = at.getMainPath();

String path = at.getPath();

if(!StringUtils.isNullOrEmpty(mainPath) && !StringUtils.isNullOrEmpty(path)){

//第一张图片

document.addPictureData(new FileInputStream(mainPath+path), XWPFDocumentUtil.PICTURE_TYPE_JPEG);

document.createPicture(document.getAllPictures().size() - 1, 300, 400, document.createParagraph());

}

}

}

}

OutputStream output = response.getOutputStream();

//生成word文件的文件名

String fileName= new String(("镇街日报.docx").getBytes("UTF-8"),"iso-8859-1");

response.setHeader("Content-disposition", "attachment; filename=" + fileName);

//把word文档写到输出流

document.write(output);

} catch (InvalidFormatException e) {

e.printStackTrace();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

//--------------------------------word文档结束-----------------------------------------------------

}

效果如下图所示:

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页

打赏作者

weixin_39714275

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值