poi导出word表格的操作讲解

一、效果如下

二、js代码

function export_word(){ //导出word
  var url = "czzsca/exportWord.do";
  this.export(url);
}
function export(url){
  var currentyear = $("#mainYear").val() * 1;
  var key_columns = ['xh',"d_name","d_unit","d_number","d_estimate","d_lastyear","jnjh","d_remarks","d_depart","d_executeunit"];
  var value_columns = ['序号','项目名称','单位','数量','总概算','至'+(currentyear-1)+'年完成',currentyear+'年计划','附注','责任部门','计划执行单位'];
  window.location.href= url+"?key_columns="+key_columns+"&value_columns="+value_columns+"&title="+currentyear+"年 更新改造计划 正式计划草案";
}

三、controller代码

(controller代码比较长,主要是格式化每一行的数据,主要是往工具类里传List<List<String>>参数,泛型的List<String>是每一行,String是每一列)

 //导出word
 @RequestMapping("/exportWord.do")
 @ResponseBody
 public ReturnMsg exportWord(String[] key_columns,String[] value_columns,String title,HttpServletResponse response){
 ReturnMsg rm = new ReturnMsg();
 try {
  response.setCharacterEncoding("UTF-8");
     response.setContentType("application/msexcle");
     response.setHeader("content-disposition", "attachment;filename="+new String("正式计划草案".getBytes("gb2312"),"ISO8859-1")+".doc");
     List<List<String>> content = new ArrayList<List<String>>();
     List<List<String>> head = new ArrayList<List<String>>();
     String jnjhzh = new BigDecimal(this.map.get("jnjhzh")==null||"".equals(this.map.get("jnjhzh")+"")?"0":this.map.get("jnjhzh")+"").setScale(1, RoundingMode.UP)+"";
     String trimpro = new BigDecimal(this.map.get("tzjh")==null||"".equals(this.map.get("tzjh")+"")?"0":this.map.get("tzjh")+"").setScale(1, RoundingMode.UP)+"";
     String temp = new BigDecimal(trimpro).subtract(new BigDecimal(jnjhzh))+"";
     if("0".equals(temp)) {
     temp = "";
     }
     head = ExportUtil.getCzzscaList(jnjhzh, trimpro, temp);
     Map dounit = new HashMap();
     dounit.put("dwlx", 0);
     dounit.put("user_type", 1);
      List<Map> d_executeunit = unitDao.selectByPrimaryKey(dounit);
      Map zrbm = new HashMap();
      zrbm.put("dwlx", 1);
      zrbm.put("user_type", 1);
      List<Map> d_zrbm = unitDao.selectByPrimaryKey(zrbm);
      List<Map> zmtype = nd_caController.findProType("2-3-4");
     for (Map map: this.list) {
       List<String> row = new ArrayList<String>();
       for (int i = 0; i < key_columns.length; i++) {
       System.out.print(map.get(key_columns[i])+",");
       Object Otzjh = map.get("tzjh")!=null?map.get("tzjh"):0;
       Object Ojnjh = map.get("jnjh")!=null?map.get("jnjh"):0;
       BigDecimal tzjh = null;
       BigDecimal jnjh = null;
       if ("tzjh".equals(key_columns[i])||"jnjh".equals(key_columns[i])||"d_lnorde".equals(key_columns[i])) {
        if(Otzjh instanceof BigDecimal) {
          tzjh = (BigDecimal)Otzjh;
         }else {
     tzjh = new BigDecimal(Otzjh+"");
     }
         if(Ojnjh instanceof BigDecimal) {
          jnjh = (BigDecimal)Ojnjh;
         }else {
          jnjh = new BigDecimal(Ojnjh+"");
     }

       }
       if ("d_lnorde".equals(key_columns[i])) {
        if(map.get("flag")!=null&&"2".equals((map.get("flag")+""))) {
        row.add("");
        }else {
        row.add(tzjh.subtract(jnjh).setScale(1, RoundingMode.UP)+""); //不为整数则四舍五入
     }
   }else if ("xh".equals(key_columns[i])&&map.get("xh")!=null) {
        if(map.get("xh").toString().indexOf("、")>-1) {
        row.add(map.get("xh").toString().replace("、", "").trim());
        }else {
        row.add(map.get("xh")+""); //不为整数则四舍五入
     }
   }else if("tzjh".equals(key_columns[i])&&map.get("tzjh")!=null) {
   if(ExportUtil.isNumeric(tzjh+"")) { //判断相减是否为整数
    row.add(tzjh+"");
      }else {
       String stzjh = tzjh.setScale(1, RoundingMode.UP)+"";
       row.add("0".equals(stzjh.charAt(stzjh.indexOf(".")+1)+"")?stzjh.replace(".0", ""):stzjh);//不为整数则四舍五入
   }
   }else if("d_estimate".equals(key_columns[i])&&map.get("d_estimate")!=null) {
   if("0".equals(map.get("d_estimate")+"")) {
    row.add("");
   }else {
    row.add(map.get("d_estimate")+"");
   }
   }else if("d_number".equals(key_columns[i])&&map.get("d_number")!=null) {
   if("0".equals(map.get("d_number")+"")) {
    row.add("");
   }else {
    row.add(map.get("d_number")+"");
   }
   }else if("jnjh".equals(key_columns[i])&&map.get("jnjh")!=null) {
   if(ExportUtil.isNumeric(jnjh+"")) { //判断相减是否为整数
    row.add(jnjh+"");
      }else {
       String sjnjh = jnjh.setScale(1, RoundingMode.UP)+"";
       row.add("0".equals(sjnjh.charAt(sjnjh.indexOf(".")+1)+"")?sjnjh.replace(".0", ""):sjnjh); //不为整数则四舍五入
   }
   }else if("d_pro_type".equals(key_columns[i])&&map.get("d_pro_type")!=null) {
   for (Map m : zmtype) {
    if((map.get("d_pro_type")+"").equals(m.get("TYPE_ID")+"")){
    row.add(m.get("NUM")+"");
    break;
    }
   }
       }else if("d_depart".equals(key_columns[i])&&map.get("d_depart")!=null) {
        String d_depart = map.get("d_depart")+"";
        String depart = "";
        for (Map m : d_zrbm) {
        if((d_depart).indexOf(",")>-1) {
         for (String string : d_depart.split(",")) {
         if((string).equals(m.get("ID")+"")) {
          depart += ","+m.get("UNITNAME")+"";
          break;
           }
    }
        }else {
         if((d_depart).equals(m.get("ID")+"")) {
         depart = ","+m.get("UNITNAME")+"";
         break;
         }
        }
   }
        if (StringUtils.isNotBlank(depart)) {
        depart = depart.substring(1, depart.length()).replace(",", "\r ");
        row.add(depart);
   }else {
    row.add("");
   }
   }else if("d_executeunit".equals(key_columns[i])&&map.get("d_executeunit")!=null) {
   boolean flag;
        for (Map m : d_executeunit) {
        flag = false;
        String executeunit = map.get("d_executeunit")+"";
        if((executeunit).indexOf(",")>-1) {
         for (String string : executeunit.split(",")) {
         if((string).equals(m.get("ID")+"")) {
          row.add((m.get("UNITNAME")+"").trim());
           flag = true;
           break;
           }
    }
         if (flag) {
         break;
    }

        }else {
         if((executeunit).equals(m.get("ID")+"")) {
         row.add((m.get("UNITNAME")+"").trim());
         break;
         }
        }
   }
       }else {
        if(map.get(key_columns[i])==null) {
        row.add("");
        }else {
        row.add((map.get(key_columns[i])+"").trim());
   }
   }
    }
       content.add(row);
  }
     head.addAll(content);
     int[] colWidths = new int[] { 600, 3000, 500, 500, 800, 800 ,800,3000,800,1500};
  XWPFDocument document = ExportUtil.exportWord(title,value_columns, head,colWidths,1,7);
  OutputStream out = response.getOutputStream();
     document.write(out);
     out.close();
     rm.setCode("1");
  rm.setMsg("导出成功");
 } catch (Exception e) {
  e.printStackTrace();
  rm.setCode("0");
  rm.setMsg("导出失败,请刷新重试。");
 }
 return rm;
 }

四、工具类代码

 /**
 *
 * @Date 2018年7月19日 上午11:19:04
 * @Description 导出word
 * @Fcunction exportWord
 * @param title
 * @param value_columns
 * @param list
 * @return XWPFDocument
 *
 */
 public static XWPFDocument exportWord(String title,String[] value_columns, List<List<String>> list,int[] colWidths,int one,int two) {
 XWPFDocument doc= new XWPFDocument();

 CTDocument1 document = doc.getDocument();
   CTBody body = document.getBody();
   if(!body.isSetSectPr()){
     body.addNewSectPr();
   }
   CTSectPr section = body.getSectPr(); 

   if(!section.isSetPgSz()){
     section.addNewPgSz();
   }
   CTPageSz pageSize = section.getPgSz();
   pageSize.setW(BigInteger.valueOf(15840));
   pageSize.setH(BigInteger.valueOf(12240));
   pageSize.setOrient(STPageOrientation.LANDSCAPE);

 //添加标题
   XWPFParagraph titleParagraph = doc.createParagraph();

   //设置段落居中
   titleParagraph.setAlignment(ParagraphAlignment.CENTER);

   XWPFRun titleParagraphRun = titleParagraph.createRun();
   titleParagraphRun.setText(title);
   titleParagraphRun.setColor("000000");
   titleParagraphRun.setFontSize(20);

   //表格
   XWPFTable ComTable = doc.createTable();

   //设置指定宽度
   CTTbl ttbl = ComTable.getCTTbl();
   CTTblGrid tblGrid = ttbl.addNewTblGrid();
   for (int i : colWidths) {
   CTTblGridCol gridCol = tblGrid.addNewGridCol();
   gridCol.setW(new BigInteger(i+""));
 }

   //表头
   XWPFTableRow rowHead = ComTable.getRow(0);
   XWPFParagraph cellParagraph = rowHead.getCell(0).getParagraphs().get(0);
   cellParagraph.setAlignment(ParagraphAlignment.CENTER); //设置表头单元格居中
   XWPFRun cellParagraphRun = cellParagraph.createRun();
 cellParagraphRun.setFontSize(10); //设置表头单元格字号
 cellParagraphRun.setBold(true); //设置表头单元格加粗
 cellParagraphRun.setText(value_columns[0]);
   for (int i = 1; i < value_columns.length; i++) {
   if(value_columns[i].indexOf("增减")>-1) {
    cellParagraph = rowHead.addNewTableCell().getParagraphs().get(0);
    cellParagraph.setAlignment(ParagraphAlignment.CENTER); //设置表头单元格居中
    cellParagraphRun = cellParagraph.createRun();
  cellParagraphRun.setFontSize(10); //设置表头单元格居中
  cellParagraphRun.setBold(true);
  cellParagraphRun.setText("增减(+ / -)");
  }else {
  cellParagraph = rowHead.addNewTableCell().getParagraphs().get(0);
    cellParagraph.setAlignment(ParagraphAlignment.CENTER); //设置表头单元格居中
    cellParagraphRun = cellParagraph.createRun();
  cellParagraphRun.setFontSize(10); //设置表头单元格居中
  cellParagraphRun.setBold(true); //设置表头单元格加粗
  cellParagraphRun.setText(value_columns[i]);
  }
 }
   int rows = list.size();
   //表格内容
   for (int i = 0; i < rows; i++) {
   XWPFTableRow rowsContent = ComTable.createRow();
   for (int j = 0; j < list.get(i).size(); j++) {
    XWPFParagraph cellParagraphC = rowsContent.getCell(j).getParagraphs().get(0);
    if(j!=one&&j!=two) {
    cellParagraphC.setAlignment(ParagraphAlignment.CENTER); //设置表格内容居中
    }
    XWPFRun cellParagraphRunC = cellParagraphC.createRun();
    cellParagraphRunC.setFontSize(10); //设置表格内容字号
    cellParagraphRunC.setText(list.get(i).get(j)+""); //单元格段落加载内容
  }
   }
   if(rows==0) {
   for (int i = 0; i < value_columns.length; i++) {
    XWPFTableCell cell = ComTable.getRow(0).getCell(i);
       cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); //垂直居中
  }
   }else {
     //设置居中
     for (int i = 0; i <= rows; i++) {
       for (int j = 0; j < list.get(0).size(); j++) {
         XWPFTableCell cell = ComTable.getRow(i).getCell(j);
         cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); //垂直居中
       }
     }
 }
 return doc;
 }

 /**
 *
 * @Date 2018年7月19日 上午11:19:21
 * @Description 判断是否是整数
 * @Fcunction isNumeric
 * @param str
 * @return boolean
 *
 */
 public static boolean isNumeric(String str) {
 if(str.indexOf(".")>0) {
  return false;
 }
 return true;
 }

 /**
 *
 * @Date 2018年7月19日 上午11:44:48
 * @Description 正式计划草案获取前两行
 * @Fcunction getCzzscaList
 * @param jnjhzh
 * @param trimpro
 * @param temp
 * @return List<List<String>>
 *
 */
 public static List<List<String>> getCzzscaList(String jnjhzh,String trimpro,String temp) {
 List<List<String>> list = new ArrayList<List<String>>();
 List<String> l1 = new ArrayList<String>(); //固定第一行
   l1.add("");
   l1.add("年度总计");
   l1.add("");
   l1.add("");
   l1.add("");
   l1.add("");
   l1.add(jnjhzh);
   l1.add("");
   l1.add("");
   l1.add("");
   list.add(l1);
   List<String> l2 = new ArrayList<String>(); //固定第二行
   l2.add("");
   l2.add("搜索总计");
   l2.add("");
   l2.add("");
   l2.add("");
   l2.add("");
   l2.add("");
//   l2.add(trimpro+"\r100%");
   l2.add("");
   l2.add("");
   l2.add("");
   list.add(l2);
 return list;
 }

五、详解:

1.设置纸张大小

(1)创建完XWPFDocument后,默认为A4纸张,如需调整纸张大小,这里我是要用A3大小使用如下代码

XWPFDocument doc= new XWPFDocument();
CTDocument1 document = doc.getDocument();
CTBody body = document.getBody();
if(!body.isSetSectPr()){
  body.addNewSectPr();
}
CTSectPr section = body.getSectPr(); 

if(!section.isSetPgSz()){
  section.addNewPgSz();
}
CTPageSz pageSize = section.getPgSz();
pageSize.setW(BigInteger.valueOf(15840));
pageSize.setH(BigInteger.valueOf(12240));
pageSize.setOrient(STPageOrientation.LANDSCAPE);

(2)默认A4纸张大小的话只用XWPFDocument

XWPFDocument doc= new XWPFDocument();

(3)使用CTPageSz类需要导入ooxml-schemas的jar包(所有需要的jar包maven依赖在底部)

2.单元格列宽度

(1)每一列宽度相等自适应,不需单独设置每一列宽度的话使用如下代码

//表格
XWPFTable ComTable = doc.createTable();
//表格自适应宽度
CTTblWidth comTableWidth = ComTable.getCTTbl().addNewTblPr().addNewTblW();
comTableWidth.setType(STTblWidth.DXA);
comTableWidth.setW(BigInteger.valueOf(9072));

(2)单独设置每列宽度

//表格
XWPFTable ComTable = doc.createTable();
//设置指定宽度
CTTbl ttbl = ComTable.getCTTbl();
CTTblGrid tblGrid = ttbl.addNewTblGrid();
int[] colWidths = new int[] { 600, 3000, 500, 500, 800, 800 ,800,3000,800,1500};
for (int i : colWidths) {
  CTTblGridCol gridCol = tblGrid.addNewGridCol();
  gridCol.setW(new BigInteger(i+""));
}

(3)使用CTTblGrid类需要导入poi-ooxml-schemas的jar包(所有需要的jar包maven依赖在底部)

3.单元格内字体样式

(1)不需要设置单元格字体

for (int i = 0; i < rows; i++) {
  XWPFTableRow rowsContent = ComTable.createRow();
  for (int j = 0; j < list.get(i).size(); j++) {
    rowsContent.getCell(j).setText(list.get(i).get(j)+""); //用单元格加载内容
  }
}

(2)设置单元格内字体字号、是否加粗

for (int i = 0; i < rows; i++) {
  XWPFTableRow rowsContent = ComTable.createRow();
  for (int j = 0; j < list.get(i).size(); j++) {
    XWPFParagraph cellParagraphC = rowsContent.getCell(j).getParagraphs().get(0);
    if(j!=1&&j!=7) {
      cellParagraphC.setAlignment(ParagraphAlignment.CENTER); //设置表格内容居中
    }
    XWPFRun cellParagraphRunC = cellParagraphC.createRun();
    cellParagraphRunC.setFontSize(10); //设置表格内容字号
    cellParagraphRun.setBold(true); //设置表头单元格加粗
    cellParagraphRunC.setText(list.get(i).get(j)+""); //单元格段落加载内容
  }
}

4.单元格居中(水平居中、垂直居中)

(1)使用单元格加载内容

for (int i = 0; i < value_columns.length; i++) {
  XWPFTableCell cell = ComTable.getRow(0).getCell(i);
  cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); //垂直居中
  CTTc cttc = cell.getCTTc();
  CTP ctp = cttc.getPList().get(0);
  CTPPr ctppr = ctp.getPPr();
  if (ctppr == null) {
    ctppr = ctp.addNewPPr();
  }
  CTJc ctjc = ctppr.getJc();
  if (ctjc == null) {
    ctjc = ctppr.addNewJc();
  }
  ctjc.setVal(STJc.CENTER); //水平居中
}

(2)使用单元格的段落加载内容,只用调用垂直居中的方法

for (int i = 0; i < value_columns.length; i++) {
  XWPFTableCell cell = ComTable.getRow(0).getCell(i);
  cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); //垂直居中
}

水平居中在3-(2)里调用了段落的方法居中过了

cellParagraphC.setAlignment(ParagraphAlignment.CENTER);

5.单元格合并

(1)跨列合并单元格

public static void mergeCellsHorizontal(XWPFTable table, int row, int fromCell, int toCell) {
 for (int cellIndex = fromCell; cellIndex <= toCell; cellIndex++) {
  XWPFTableCell cell = table.getRow(row).getCell(cellIndex);
  if ( cellIndex == fromCell ) {
  cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
  } else {
  cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
  }
 }
 }

(2)跨行合并单元格

public static void mergeCellsVertically(XWPFTable table, int col, int fromRow, int toRow) {
 for (int rowIndex = fromRow; rowIndex <= toRow; rowIndex++) {
  XWPFTableCell cell = table.getRow(rowIndex).getCell(col);
  if ( rowIndex == fromRow ) {
  cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
  } else {
  cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
  }
 }
 }

6.单元格内换行,单元格内使用\r换行没用,可以用addBreak方法

 for (int i = 0; i < list_vPostdutyNorm_parm.size(); i++) {
  row = ComTable.createRow();
  index++;
  for (int j = 0; j < list_vPostdutyNorm_parm.get(i).size(); j++) {
  if (j == 3 || j == 4) {
   cellParagraph.setAlignment(ParagraphAlignment.LEFT); //设置表头单元格居中
  } else {
   cellParagraph.setAlignment(ParagraphAlignment.CENTER); //设置表头单元格居中
  }
  String content = list_vPostdutyNorm_parm.get(i).get(j);
  cellParagraph = row.getCell(j).getParagraphs().get(0);
  cellParagraphRun = cellParagraph.createRun();
  cellParagraphRun.setFontSize(10); //设置表头单元格字号
  cellParagraphRun.setBold(false); //设置表头单元格加粗
  if (content.indexOf("\r") > -1) {
   String[] text = content.split("\r");
   for (int k = 0; k < text.length; k++) {
   if (k == 0) {
    cellParagraphRun.setText(text[k]);
   }else {
    cellParagraphRun.addBreak();
    cellParagraphRun.setText(text[k]);
   }
   }
  }else {
   cellParagraphRun.setText(content);
  }
  }
 }

六、使用到的Maven依赖

<dependency>
  <groupId>org.apache.xmlbeans</groupId>
  <artifactId>xmlbeans</artifactId>
  <version>2.6.0</version>
</dependency>
<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi-ooxml</artifactId>
  <version>3.9</version>
</dependency>
<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>ooxml-schemas</artifactId>
  <version>1.1</version>
</dependency>
<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi-ooxml-schemas</artifactId>
  <version>3.16</version>
</dependency>

以上这篇poi导出word表格的操作讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java实现在线预览--poi实现word、excel、ppt转html的方法

    java实现在线预览 - -之poi实现word.excel.ppt转html,具体内容如下所示: ###简介 java实现在线预览功能是一个大家在工作中也许会遇到的需求,如果公司有钱,直接使用付费的第三方软件或者云在线预览服务就可以了,例如永中office.office web 365(http://www.officeweb365.com/)他们都有云在线预览服务,就是要钱0.0 如果想要免费的,可以用openoffice,还需要借助其他的工具(例如swfTools.FlexPaper等)才

  • java Apache poi 对word doc文件进行读写操作

    使用POI读写Word doc文件 Apache poi的hwpf模块是专门用来对word doc文件进行读写操作的.在hwpf里面我们使用HWPFDocument来表示一个word doc文档.在HWPFDocument里面有这么几个概念: Range:它表示一个范围,这个范围可以是整个文档,也可以是里面的某一小节(Section),也可以是某一个段落(Paragraph),还可以是拥有共同属性的一段文本(CharacterRun).   Section:word文档的一个小节,一个word文

  • java poi解析word的方法

    之前做过用java读取word文档,获取word文本内容. 但发现docx的支持,doc就异常了. 后来找了很多资料发现是解析方法不一样. 首先要导入poi相关的jar包 我用的是maven,pom.xml引入如下: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.8</version>

  • 利用Java Apache POI 生成Word文档示例代码

    最近公司做的项目需要实现导出Word文档的功能,网上关于POI生成Word文档的例子很少,找了半天才在官网里找到个Demo,有了Demo一切就好办了. /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See

  • java使用POI实现html和word相互转换

    项目后端使用了springboot,maven,前端使用了ckeditor富文本编辑器.目前从html转换的word为doc格式,而图片处理支持的是docx格式,所以需要手动把doc另存为docx,然后才可以进行图片替换. 一.添加maven依赖 主要使用了以下和poi相关的依赖,为了便于获取html的图片元素,还使用了jsoup: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi&

  • 利用POI读取word、Excel文件的最佳实践教程

    前言 POI是 Apache 旗下一款读写微软家文档声名显赫的类库.应该很多人在做报表的导出,或者创建 word 文档以及读取之类的都是用过 POI.POI 也的确对于这些操作带来很大的便利性.我最近做的一个工具就是读取计算机中的 word 以及 excel 文件. POI结构说明 包名称说明 HSSF提供读写Microsoft Excel XLS格式档案的功能. XSSF提供读写Microsoft Excel OOXML XLSX格式档案的功能. HWPF提供读写Microsoft Word

  • java poi设置生成的word的图片为上下型环绕以及其位置的实现

    问题描述 在使用poi-tl word模版工具时,发现生成的文档中,图片格式为嵌入型,有的图片甚至被表格遮挡一半.而自己想要的图片格式为上下型环绕,并且图片需要居中. 问题分析 poi-tl渲染图片,使用的是org.apache.poi.xwpf.usermodel.XWPFRun的addPicture方法,该方法中有一段代码:CTInline inline = drawing.addNewInline();意思就是默认将图片转为inline类型,即行内元素. 然后我们把生成的嵌入型图片的文档转

  • poi导出word表格的操作讲解

    一.效果如下 二.js代码 function export_word(){ //导出word var url = "czzsca/exportWord.do"; this.export(url); } function export(url){ var currentyear = $("#mainYear").val() * 1; var key_columns = ['xh',"d_name","d_unit","

  • Java SpringBoot集成文件之如何使用POI导出Word文档

    目录 前言 知识准备 什么是POI 实现案例 Pom依赖 导出Word 前言 通过Apache POI导出excel,而Apache POI包含是操作Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API.所以也是可以通过POI来导出word的.本文主要介绍通过SpringBoot集成POI工具实现Word的导出功能. 知识准备 需要理解Apache POI遵循的标准(Office Open XML(OOXML)标准和微软的OLE 2复合文档

  • Java实现导出word表格的示例详解

    目录 目标 实现 依赖 模版 代码 目标 多级表头.分页.动态数据 实现 依赖 <!-- poi工具类--> <dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.12.0</version> </dependency> 模版 代码 TableData数据(模版对应的数据对象)

  • 使用python处理一万份word表格简历操作

    前言 有一天朋友A向我抱怨,他的老板要求他把几百份word填好的word表格简历信息整理到excel中,看着他一个个将姓名,年龄--从word表格里复制粘贴到excel里,边粘贴心里边暗暗诅咒着自己的boss--但毕竟新手小白,又不能违背老板的意愿说我不干了,爱咋咋地,于是过来向我求助.我说,这事情好办啊,学学python就能解决啊,简单容易上手.好了,接下来进入正题. 思路:首先针对每一份word表格进行分析 怎么才能利用python获取到word表格里面的信息,最初的想法是把word里面的表

  • SpringBoot集成POI导出Execl表格之统一工具类

    最近项目需求中有需要导出Execl表格的要求,而且还是大量的数据,于是把之前的整理了一下,抽成了一个统一的工具类,需要时直接调用工具类即可,代码如下: 一. 先看下效果 二. 导入依赖 <properties>         <poi.version>4.1.2</poi.version>         <easypoi.version>3.2.0</easypoi.version>     </properties>      

  • Java使用POI导出Excel(一):单sheet

    相关文章: Java使用POI导出Excel(一):单sheet Java使用POI导出Excel(二):多个sheet 相信在大部分的web项目中都会有导出导入Excel的需求,今天我们就来看看如何用Java代码去实现 用POI导出Excel表格. 一.pom引用 pom文件中,添加以下依赖  <!--Excel工具--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>po

  • Java利用POI实现导入导出Excel表格

    本文实例为大家分享了Java利用POI实现导入导出Excel表格的具体代码,供大家参考,具体内容如下 一.Java利用POI实现导入导出Excel表格demo 1.引入依赖 <dependency>       <groupId>org.apache.poi</groupId>       <artifactId>poi-ooxml</artifactId>        <version>4.1.2</version>

  • C#中word导出功能的骚操作详解

    前言 马上过牛年了,先祝大家新年好,身体好,心情好!!! 年前最后写一篇之前项目开发的一个功能,自己根据系统业务,想到的一个解决办法,效率还是不错的,废话不多说,开整!!! 需求: 企业填报自己的企业信息到系统中,最后需要将数据以给定word模板形式导出,功能简单,就是要开发快,赶及 分析:主要费时间的工作是设计企业填报表单设计实现,以及根据提供的word模板导出数据这块儿,因为涉及到的表单比较多,一个表单最少也有差不多150多个字段,一个一个对,头发也得一把一把的掉 想到的解决法案:在导出wo

  • Python处理EXCEL表格导入操作分步讲解

    目录 一.前期准备 二.编写代码基本思路 三.编写代码读取数据 四.结语 一.前期准备 此篇使用两种导入excel数据的方式,形式上有差别,但两者的根本方法实际上是一样的. 首先需要安装两个模块,一个是pandas,另一个是xlrd. 在顶部菜单栏中点击文件,再点击设置,然后在设置中找到以下界面,并点击“+”号. 然后会出现以下界面,在搜索框中分别搜索以上两个模块:pandas/xlrd. 选中搜索出来的模块,并点击左下角的的安装按钮,便可将模块安装到自己电脑中. 需要注意的是,xlrd的新版本

随机推荐