欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java web将数据导出为Excel格式文件代码片段

程序员文章站 2024-03-07 16:38:21
本文实例为大家分享了java web将数据导出为excel格式文件的具体代码,供大家参考,具体内容如下 1、jsp代码

本文实例为大家分享了java web将数据导出为excel格式文件的具体代码,供大家参考,具体内容如下

1、jsp代码

<input type="button" class="btn btn-info" onclick="getverexcel();" value="导出为excel文件" />

2、js代码

function getverexcel() {
  window.location.href = '/pms/jsp/version/getprdverlistexcel?page='
      + $("#getpage").html() + '&key=' + $("#select").val();
}

3、java代码

  /**
   * 
   * purpose :将产品版本列表导出为excel文件
   * @param req
   *      请求
   * @param resp
   *      应答
   * @param page
   *      当前页数
   * @param key
   *      查询条件
   * @return
   */
  @requestmapping("getprdverlistexcel")
  public void getexcel(httpservletrequest req, httpservletresponse resp, integer page, string key) {
    // 设置文件的mime类型
    resp.setcontenttype("application/vnd.ms-excel");

    // 得到所有的数据
    list<version> verlist = prdversionser.getallprdversion(key);
    // 若没有数据,则给用户提示
    if (verlist.size() == 0) {
      req.setattribute("getfilemsg", "没有符合条件的信息!");
      req.setattribute("select", key);
      try {
        req.getrequestdispatcher("/jsp/version/ver_list.jsp").forward(req, resp);
      } catch (exception e) {
        e.printstacktrace();
      }
    } else {
      // 存储编码后的文件名
      string name = "name";
      // 存储文件名称
      string n = "";
      if (key != "") {
        n = verlist.get(0).getprdname() + "的版本列表";
      } else {
        n = "产品版本列表";
      }
      try {
        name = urlencoder.encode(n, "utf-8");
      } catch (unsupportedencodingexception e1) {
        e1.printstacktrace();
      }
      resp.setheader("content-disposition",
          "attachment;filename=" + name + ".xls;filename*=utf-8''" + name + ".xls");

      system.out.println("key:" + key);

      // 从session中删除saveexcelmsg属性
      req.getsession().removeattribute("saveexcelmsg");
      // 定义一个输出流
      servletoutputstream sos = null;

      // 创建一个工作簿
      hssfworkbook wb = new hssfworkbook();
      // 创建一个工作表
      hssfsheet sheet = null;
      if (key != "") {
        sheet = wb.createsheet(verlist.get(0).getprdname() + "的版本信息");
      } else {
        sheet = wb.createsheet("产品版本信息");
      }
      // 返回数据格式对象
      // 从格式对象中获取对应日期格式的编号,如果格式不存在,该方法会为它生成新的编号
      hssfdataformat format = wb.createdataformat();
      short dfnum = format.getformat("yyyy-mm-dd");
      // 创建样式对象
      cellstyle style = wb.createcellstyle();
      // 设置数据格式
      style.setdataformat(dfnum);
      // 创建第一行(表格标题)
      hssfrow row = sheet.createrow(0);
      hssfcell cell = row.createcell(0, hssfcell.cell_type_string);
      if (key != "") {
        cell.setcellvalue(verlist.get(0).getprdname() + "的产品版本列表");
      } else {
        cell.setcellvalue("产品版本列表");
      }

      // 创建第二行(表头)
      row = sheet.createrow(1);
      cell = row.createcell(0, hssfcell.cell_type_string);
      cell.setcellvalue("序号");

      cell = row.createcell(1, hssfcell.cell_type_string);
      cell.setcellvalue("产品名称");

      cell = row.createcell(2, hssfcell.cell_type_string);
      cell.setcellvalue("版本号");

      cell = row.createcell(3, hssfcell.cell_type_string);
      cell.setcellvalue("发布日期");

      cell = row.createcell(4, hssfcell.cell_type_string);
      cell.setcellvalue("版本类型");

      cell = row.createcell(5, hssfcell.cell_type_string);
      cell.setcellvalue("版本描述");

      int num = 1;
      // 遍历输出verlist中的数据,将其存入excel中
      for (int i = 0; i < verlist.size(); i++) {
        row = sheet.createrow(i + 2);
        // 写入序号
        cell = row.createcell(0, hssfcell.cell_type_numeric);
        cell.setcellvalue(num);
        num++;
        // 写入产品名称
        cell = row.createcell(1, hssfcell.cell_type_string);
        cell.setcellvalue(verlist.get(i).getprdname());
        // 写入版本号
        cell = row.createcell(2, hssfcell.cell_type_string);
        cell.setcellvalue(verlist.get(i).getverno());

        // 写入发布日期(日期格式做处理)
        cell = row.createcell(3, hssfcell.cell_type_string);
        // 将样式应用于单元格
        cell.setcellstyle(style);
        cell.setcellvalue(verlist.get(i).getverdate());

        // 写入版本类型
        cell = row.createcell(4, hssfcell.cell_type_string);
        cell.setcellvalue(verlist.get(i).getvertype());

        // 写入版本描述
        cell = row.createcell(5, hssfcell.cell_type_string);
        cell.setcellvalue(verlist.get(i).getverdesc());
      }
      try {
        // 保存到文件中
        sos = resp.getoutputstream();
        wb.write(sos);
      } catch (exception e) {
        e.printstacktrace();
      } finally {
        if (sos != null) {
          try {
            sos.close();
          } catch (ioexception e) {
            e.printstacktrace();
          }
        }
      }
    }
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。