java导出word

 @SuppressWarnings("resource")
 public IGITF01DTO  interfaceDefExportWords(IGITF01DTO dto) throws BLException{
     log.info("==========接口定义信息-导出处理开始==========");
     HttpServletResponse response = dto.getResponse();
     response.reset();
     response.setContentType("binary/octet-stream");
     OutputStream output = null;
     try {
         //调用查询要导出的结果
         InterfaceDefInfo interinfo = interfaceDefBL.searchInterfaceDefByPK(Integer.parseInt(dto.getIfdid_opt()));
         //查询接口校验信息
         InterfaceCheckSearchCondImpl ifccond = new InterfaceCheckSearchCondImpl();
         ifccond.setIfdid_eq(Integer.parseInt(dto.getIfdid_opt()));
         List<InterfaceCheckInfo> dellistifc = interfaceCheckBL.searchInterfaceCheck(ifccond);
         //文档名称
         String doctitle = "需要导出的文件.docx";
         response.setHeader("Content-Disposition", "attachment;filename="
                 + new String(doctitle.getBytes("gb2312"), "iso-8859-1"));
         output = response.getOutputStream();

         //Blank Document
         XWPFDocument document= new XWPFDocument();

         document = exportInterfaceDef(document,interinfo,dellistifc);
         //执行导出
         document.write(output);
     } catch (Exception e) {
         log.error("错误信息:"+e);
     } finally {
         try {
             // 关闭输出流
             if (output != null) {
                 output.flush();
                 output.close();
             }
         } catch (Exception e) {
             log.error(">>导出Word关闭输出流异常:" + e.getMessage());
         }
     }
     log.info("==========导出处理结束==========");
     return dto;
 }
 /**
  * @Description 导出Word文档
  * @param document 文档操作对象
  * @return XWPFDocument
  * @throws BLException
  */
 public XWPFDocument exportInterfaceDef(XWPFDocument document, InterfaceDefInfo ifdinfo,List<InterfaceCheckInfo> dellistifc) throws BLException {
     //添加标题
     XWPFParagraph titleParagraph = document.createParagraph();
     //设置段落居中
     titleParagraph.setAlignment(ParagraphAlignment.CENTER);
     XWPFRun titleParagraphRun = titleParagraph.createRun();
     titleParagraphRun.setText("***");//设置文本
     titleParagraphRun.setColor("000000");
     titleParagraphRun.setFontSize(22);
     titleParagraphRun.setFontFamily("黑体");

     //换行
     XWPFParagraph paragraph1 = document.createParagraph();
     XWPFRun paragraphRun1 = paragraph1.createRun();
     paragraphRun1.setText("\r");

     titleParagraph = document.createParagraph();
     titleParagraph.setAlignment(ParagraphAlignment.LEFT);
     titleParagraphRun = titleParagraph.createRun();
     titleParagraphRun.setText("1.总体业务说明");
     titleParagraphRun.setColor("000000");
     titleParagraphRun.setBold(true);
     titleParagraphRun.setFontSize(16);
     titleParagraphRun.setFontFamily("仿宋");

     paragraph1 = document.createParagraph();
     paragraphRun1 = paragraph1.createRun();
     paragraphRun1.setText("\r");

     //二级标题
     titleParagraph = document.createParagraph();
     titleParagraph.setAlignment(ParagraphAlignment.LEFT);
     titleParagraphRun = titleParagraph.createRun();
     titleParagraphRun.setText("2.详细设计");
     titleParagraphRun.setColor("000000");
     titleParagraphRun.setBold(true);
     titleParagraphRun.setFontSize(16);
     titleParagraphRun.setFontFamily("仿宋");

     paragraph1 = document.createParagraph();
     paragraphRun1 = paragraph1.createRun();
     paragraphRun1.setText("\r");

     //二级标题
     //查询来源下拉列表
     String resourcename = "";
     CodeDetailSearchCondImpl codeDetailhCond = new CodeDetailSearchCondImpl();
     codeDetailhCond.setCcid(CodeDefine.ITF_RESOURCE.getCcid());
     codeDetailhCond.setCid(ifdinfo.getIfdresource());
     List<CodeDetail> resourceList  = codeDetailBL.searchCodeDetail(codeDetailhCond, CommonDefineUtils.CODE_DETAIL_ORDER_BY_MODE_0);
     if(resourceList!=null&&resourceList.size()>0){
         resourcename =resourceList.get(0).getCvalue();
     }
     titleParagraph = document.createParagraph();
     titleParagraph.setAlignment(ParagraphAlignment.LEFT);
     titleParagraphRun = titleParagraph.createRun();
     titleParagraphRun.setText("2.1."+resourcename+"接口集成");
     titleParagraphRun.setColor("000000");
     titleParagraphRun.setBold(true);
     titleParagraphRun.setFontSize(16);
     titleParagraphRun.setFontFamily("仿宋");

     paragraph1 = document.createParagraph();
     paragraphRun1 = paragraph1.createRun();
     paragraphRun1.setText("\r");

     //三级标题
     titleParagraph = document.createParagraph();
     titleParagraph.setAlignment(ParagraphAlignment.LEFT);
     titleParagraphRun = titleParagraph.createRun();
     titleParagraphRun.setText("2.1.1."+ifdinfo.getIfdflag()+"接口");
     titleParagraphRun.setColor("000000");
     titleParagraphRun.setBold(true);
     titleParagraphRun.setFontSize(16);
     titleParagraphRun.setFontFamily("仿宋");

     paragraph1 = document.createParagraph();
     paragraphRun1 = paragraph1.createRun();
     paragraphRun1.setText("\r");
     //三级标题
     titleParagraph = document.createParagraph();
     titleParagraph.setAlignment(ParagraphAlignment.LEFT);
     titleParagraphRun = titleParagraph.createRun();
     titleParagraphRun.setText("2.1.2.功能描述");
     titleParagraphRun.setColor("000000");
     titleParagraphRun.setBold(true);
     titleParagraphRun.setFontSize(16);
     titleParagraphRun.setFontFamily("仿宋");

     paragraph1 = document.createParagraph();
     paragraphRun1 = paragraph1.createRun();
     paragraphRun1.setText("\r");

     titleParagraph = document.createParagraph();
     titleParagraph.setAlignment(ParagraphAlignment.LEFT);
     titleParagraphRun = titleParagraph.createRun();
     titleParagraphRun.setText(ifdinfo.getIfddesc());
     titleParagraphRun.setColor("000000");
     titleParagraphRun.setBold(false);
     titleParagraphRun.setFontSize(14);
     titleParagraphRun.setFontFamily("仿宋");

     paragraph1 = document.createParagraph();
     paragraphRun1 = paragraph1.createRun();
     paragraphRun1.setText("\r");

     titleParagraph = document.createParagraph();
     titleParagraph.setAlignment(ParagraphAlignment.LEFT);
     titleParagraphRun = titleParagraph.createRun();
     titleParagraphRun.setText("2.1.3.消息体格式及说明");
     titleParagraphRun.setColor("000000");
     titleParagraphRun.setBold(true);
     titleParagraphRun.setFontSize(16);
     titleParagraphRun.setFontFamily("仿宋");

     paragraph1 = document.createParagraph();
     paragraphRun1 = paragraph1.createRun();
     paragraphRun1.setText("\r");

     titleParagraph = document.createParagraph();
     titleParagraph.setAlignment(ParagraphAlignment.LEFT);
     titleParagraphRun = titleParagraph.createRun();
     titleParagraphRun.setText(ifdinfo.getIfprecontent());
     titleParagraphRun.setColor("000000");
     titleParagraphRun.setBold(false);
     titleParagraphRun.setFontSize(14);
     titleParagraphRun.setFontFamily("仿宋");

     paragraph1 = document.createParagraph();
     paragraphRun1 = paragraph1.createRun();
     paragraphRun1.setText("\r");

     titleParagraph = document.createParagraph();
     titleParagraph.setAlignment(ParagraphAlignment.LEFT);
     titleParagraphRun = titleParagraph.createRun();
     titleParagraphRun.setText("2.1.4.接口定义");
     titleParagraphRun.setColor("000000");
     titleParagraphRun.setBold(true);
     titleParagraphRun.setFontSize(16);
     titleParagraphRun.setFontFamily("仿宋");

     //基本信息表格
     if(dellistifc!=null&&dellistifc.size()>0){
         XWPFTable infoTable = document.createTable();
         //列宽自动分割
         CTTblWidth infoTableWidth = infoTable.getCTTbl().addNewTblPr().addNewTblW();
         infoTableWidth.setType(STTblWidth.DXA);
         infoTableWidth.setW(BigInteger.valueOf(8000));

         XWPFTableRow firstRowOne = infoTable.getRow(0);
         XWPFTableCell titleCell1 = firstRowOne.getCell(0);
         setStyles(titleCell1, "变量名称",false,5000,14,ParagraphAlignment.CENTER);
         XWPFTableCell titleCell2 = firstRowOne.addNewTableCell();
         setStyles(titleCell2, "类型",false,5000,14,ParagraphAlignment.LEFT);
         XWPFTableCell titleCell3 = firstRowOne.addNewTableCell();
         setStyles(titleCell3, "说明",false,5000,14,ParagraphAlignment.LEFT);
         XWPFTableCell titleCell4 = firstRowOne.addNewTableCell();
         setStyles(titleCell4, "是否必填",false,5000,14,ParagraphAlignment.LEFT);
XWPFTableCell titleCell5 = firstRowOne.addNewTableCell();
setStyles(titleCell5, "描述",false,5000,14,ParagraphAlignment.LEFT);
         //设置行高与垂直居中
         firstRowOne.setHeight(500);
         titleCell1.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
         titleCell2.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
         titleCell3.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
         titleCell4.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
titleCell5.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);

         for(InterfaceCheckInfo ifcinfo:dellistifc){
             //表格第1行
             XWPFTableRow tableRow = infoTable.createRow();
             XWPFTableCell tableCell1 = tableRow.getCell(0);
             setStyles(tableCell1, ifcinfo.getIfckey(),false,5000,14,ParagraphAlignment.CENTER);
             XWPFTableCell tableCell2 = tableRow.getCell(1);
             setStyles(tableCell2, ifcinfo.getIfctype(),false,5000,14,ParagraphAlignment.LEFT);
             XWPFTableCell tableCell3 = tableRow.getCell(2);
             setStyles(tableCell3, ifcinfo.getIfcname(),false,5000,14,ParagraphAlignment.LEFT);
             XWPFTableCell tableCell4 = tableRow.getCell(3);
   setStyles(tableCell4, ifcinfo.getIfcname(),false,5000,14,ParagraphAlignment.LEFT);

             //判断当前是否必填
             String isnull = "";
             if("0".equals(ifcinfo.getIfcnotnull())){
                 isnull = "是";
             }else if("1".equals(ifcinfo.getIfcnotnull())){
                 isnull = "否";
             }
   XWPFTableCell tableCell5 = tableRow.getCell(4);
   setStyles(tableCell5, ifcinfo.getIfcdesc(),false,5000,14,ParagraphAlignment.LEFT);
             //设置行高与垂直居中
             tableRow.setHeight(500);
             tableCell1.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
             tableCell2.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
             tableCell3.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
             tableCell4.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
   tableCell5.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
         }
     }

     return document;
 }

 /**
  * @Description 设置样式
  * @param cell 单元格
  * @param val 单元格的值
  * @param changeLine 是否换行
  * @param colWidth 表格列宽
  * @param fontsize 字体大小
  * @param align 对齐方式
  */
 public void setStyles(XWPFTableCell cell,String val,boolean changeLine,Integer colWidth,int fontsize,ParagraphAlignment align) {
     // 关键的一步,删掉原有的段落
     cell.removeParagraph(0);// 感觉注释有些问题,这个好像只是删除单元格原有内容,而不是删掉整个段落
     XWPFParagraph newPara = new XWPFParagraph(cell.getCTTc().addNewP(), cell);
     //内容居中显示
     newPara.setAlignment(align);
     XWPFRun xr = newPara.createRun();
     xr.setFontFamily("仿宋");
     xr.setFontSize(fontsize);

     if(StringUtils.isNotEmpty(val)) {
         //判断是否需要单元格内换行
         String[] valArr = {val};
         if(val.indexOf("#hh#")>0) {
             valArr = val.split("#hh#");
         }

         for(int i=0;i<valArr.length;i++) {
             String inval = valArr[i];
             xr.setText(inval);
             if(i<valArr.length-1) {
                 xr.addBreak();
             }
         }
     } else {
         xr.setText("");
     }

     //换行方法(语句)
     if(changeLine){
         xr.addBreak();
     }
     if(colWidth!=0){
         //设置表格里列宽
         CTTc cttc = cell.getCTTc();
         CTTcPr cellPr = cttc.addNewTcPr();
         cellPr.addNewTcW().setW(BigInteger.valueOf(colWidth));
     }
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值