springmvc实现导出数据信息为excle表格示例代码

1.项目增加导出日志信息

2.项目中导入poi-*.jar等操作excel文件的jar文件

  • poi-3.7-20120326.jar
  • poi-excelant-3.7-20101029.jar
  • poi-ooxml-3.7.jar
  • poi-ooxml-schemas-3.7.jar

Excel导出就是根据前台条件将参数传到controller,根据参数去数据库中进行查询,查询出list集合,将list集合生成excle数据下载。

代码片段:

Contorller.Java

/**
   * 导出信息
   * @param model
   */
  @RequestMapping("exportCustomer.do")
  @SystemControllerLog(description = "数据库表单导出Excle")
  public void exportCustomer(ModelMap model) {
    //TODO 如需添加条件
    //model.addAttribute("username", nameStr);
    //获取需要导出的数据List
    List<CMcustomer> cusList=customerService.exportCustomer(model);
      //使用方法生成excle模板样式
    HSSFWorkbook workbook = customerService.createExcel(cusList, request);
    SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); // 定义文件名格式 

    try {
    //定义excle名称 ISO-8859-1防止名称乱码
      String msg = new String(
          ("客户信息_" + format.format(new Date()) + ".xls").getBytes(),
          "ISO-8859-1");
      // 以导出时间作为文件名
      response.setContentType("application/vnd.ms-excel");
      response.addHeader("Content-Disposition", "attachment;filename="
          + msg);
      workbook.write(response.getOutputStream());
    } catch (IOException e) {
      logger.error(e);
    }
  }

2.Service中createExcel方法

public HSSFWorkbook createExcel(List<CMcustomer> cusList,
    HttpServletRequest request) { 

    // 创建一个webbook,对应一个excel文件
    HSSFWorkbook workbook = new HSSFWorkbook();
    // 在webbook中添加一个sheet,对应excel文件中的sheet
    HSSFSheet sheet = workbook.createSheet("客户信息表");
    // 设置列宽
    sheet.setColumnWidth(0, 25 * 100);
    sheet.setColumnWidth(1, 35 * 100);
    sheet.setColumnWidth(2, 35 * 100);
    sheet.setColumnWidth(3, 40 * 100);
    sheet.setColumnWidth(4, 45 * 100);
    sheet.setColumnWidth(5, 45 * 100);
    sheet.setColumnWidth(6, 50 * 100);
    sheet.setColumnWidth(7, 80 * 100);
    sheet.setColumnWidth(8, 35 * 100);
    sheet.setColumnWidth(9, 40 * 100);
    // 在sheet中添加表头第0行
    HSSFRow row = sheet.createRow(0);
    // 创建单元格,并设置表头,设置表头居中
    HSSFCellStyle style = workbook.createCellStyle();
    // 创建一个居中格式
    style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    // 带边框
    style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
    // 生成一个字体
    HSSFFont font = workbook.createFont();
    // 字体增粗
    font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    // 字体大小
    font.setFontHeightInPoints((short) 12);
    // 把字体应用到当前的样式
    style.setFont(font); 

    // 单独设置整列居中或居左
    HSSFCellStyle style1 = workbook.createCellStyle();
    style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    HSSFCellStyle style2 = workbook.createCellStyle();
    style2.setAlignment(HSSFCellStyle.ALIGN_LEFT); 

    HSSFCellStyle style3 = workbook.createCellStyle();
    style3.setAlignment(HSSFCellStyle.ALIGN_LEFT);
    HSSFFont hssfFont = workbook.createFont();
    hssfFont.setColor(HSSFFont.COLOR_RED);
    hssfFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    style3.setFont(hssfFont); 

    HSSFCellStyle style4 = workbook.createCellStyle();
    style4.setAlignment(HSSFCellStyle.ALIGN_LEFT);
    HSSFFont hssfFont1 = workbook.createFont();
    hssfFont1.setColor(HSSFFont.COLOR_NORMAL);
    hssfFont1.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    style4.setFont(hssfFont1); 

    HSSFCell cell = row.createCell(0);
    cell.setCellValue("序号");
    cell.setCellStyle(style); 

    cell = row.createCell(1);
    cell.setCellValue("客户姓名");
    cell.setCellStyle(style); 

    cell = row.createCell(2);
    cell.setCellValue("性别");
    cell.setCellStyle(style); 

    cell = row.createCell(3);
    cell.setCellValue("状态");
    cell.setCellStyle(style); 

    cell = row.createCell(4);
    cell.setCellValue("电话");
    cell.setCellStyle(style); 

    cell = row.createCell(5);
    cell.setCellValue("邮箱");
    cell.setCellStyle(style); 

    cell = row.createCell(6);
    cell.setCellValue("地址");
    cell.setCellStyle(style);
    for (int i = 0; i < cusList.size(); i++) {
      String logTypeDis = "";
      row = sheet.createRow(i + 1);
      CMcustomer cMcustomer = cusList.get(i);
      // 创建单元格,并设置值
      // 编号列居左
      HSSFCell c1 = row.createCell(0);
      c1.setCellStyle(style2);
      c1.setCellValue(i);
      HSSFCell c2 = row.createCell(1);
      c2.setCellStyle(style1);
      c2.setCellValue(cMcustomer.getCustomername());//客户姓名 

      String sexStr = cMcustomer.getSex();//性别 0:女,1:男
      String sex="";
      if ("1".equals(sexStr)) {
        sex="男";
      }
      if ("0".equals(sexStr)) {
        sex="女";
      }
      HSSFCell c3 = row.createCell(2);//性别
      c3.setCellStyle(style1);
      c3.setCellValue(sex); 

      String statusStr = cMcustomer.getStatus();//客户状态1.在职,2.离职
      String status="";
      if ("1".equals(statusStr)) {
        status="在职";
      }
      if ("2".equals(statusStr)) {
        status="离职";
      }
      HSSFCell c4 = row.createCell(3);//状态
      c4.setCellStyle(style1);
      c4.setCellValue(status);
      String customerid = cMcustomer.getCustomerid();//客户id
      List<CMphone> phoneList = cMphoneMapper.selectByCustomerid(customerid);
      String phone="";
      if (phoneList!=null&&phoneList.size()>0) {
        for (int j = 0; j < phoneList.size(); j++) {
          phone = phoneList.get(j).getPhone();
        }
      }
      HSSFCell c5 = row.createCell(4);//电话
      c5.setCellStyle(style1);
      c5.setCellValue(phone);
      List<CMemail> emailList = cMemailMapper.selectAll(customerid);
      String email="";
      if (emailList!=null&&emailList.size()>0) {
        for (int j = 0; j < emailList.size(); j++) {
          email = emailList.get(j).getEmail();
        }
      }
      HSSFCell c6 = row.createCell(5);//邮箱
      c6.setCellStyle(style1);
      c6.setCellValue(email);
      CMaddress cMaddress=new CMaddress();
      cMaddress.setCustomerid(customerid);
    List<CMaddress> adderssList = cMaddressMapper.selectAll(cMaddress);
      String adderss="";
      if (adderssList!=null&&adderssList.size()>0) {
        for (int j = 0; j < adderssList.size(); j++) {
          adderss = adderssList.get(j).getAddress();
        }
      }
      HSSFCell c7 = row.createCell(6);//地址
      c7.setCellStyle(style1);
      c7.setCellValue(adderss); 

      //使用默认格式
      row.createCell(1).setCellValue(cMcustomer.getCustomername());
      row.createCell(2).setCellValue(sex);
      row.createCell(3).setCellValue(status);
      row.createCell(4).setCellValue(phone);
      row.createCell(5).setCellValue(email);
      row.createCell(6).setCellValue(adderss);
    }
    return workbook;
}

3.页面jsp调用

//导出信息
    function exporBtn(){
    $.ajax({
      type:"POST",
      url:"<%=path%>/customer/exportCustomer.do",
      success:function(data){
        window.open('<%=path%>/customer/exportCustomer.do');
      } 

    });
  } 

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

(0)

相关推荐

  • SpringMVC上传和解析Excel方法

    示例:导入相关数据(Excel文件),相关的文件数据编辑好. XML文件配置 再spring的xml文件中配置要上传文件的大小 <!-- 上传文件拦截,设置最大上传文件大小 10M=10*1024*1024(B)=10485760 bytes --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver&qu

  • 详解poi+springmvc+springjdbc导入导出excel实例

    工作中常遇到导入导出excel的需求,本獂有一简答实例与大家分享. 废话不多说, 1.所需jar包: 2.前端代码: ieport.jsp: <%@page import="java.util.Date"%> <%@ page language="java" contentType="text/html; charset=utf-" pageEncoding="utf-"%> <!DOCTYPE

  • springmvc实现导出数据信息为excle表格示例代码

    1.项目增加导出日志信息 2.项目中导入poi-*.jar等操作excel文件的jar文件 poi-3.7-20120326.jar poi-excelant-3.7-20101029.jar poi-ooxml-3.7.jar poi-ooxml-schemas-3.7.jar Excel导出就是根据前台条件将参数传到controller,根据参数去数据库中进行查询,查询出list集合,将list集合生成excle数据下载. 代码片段: Contorller.Java /** * 导出信息 *

  • 小程序中实现excel数据的批量导入的示例代码

    目录 1 建立数据源 2 编制入库的代码 2.1 创建低码方法 2.2 低码中调用连接器 3 最终的代码 4 总结 我们上一篇介绍了如何利用微搭的自定义连接器接入腾讯文档的数据,光有接入是不够的,更重要的是我们需要将采集的数据积累下来,变成企业的数字资产. 积累数据最好的方式就是把数据存入数据库,低码工具除了有可视化编程的便利外,还提供了线上的文档型数据库.文档数据库比传统数据库的优势是,文档数据库的返回结构是JSON格式,直接就可以在前端进行渲染.关系型数据库还得通过代码进行转译. 另外一个方

  • Springboot+AOP实现返回数据提示语国际化的示例代码

    前言 本篇内容: 提示语的国际化返回,自定义多语言. 本文使用aop方式,拦截接口返回的数据,进行转换. 正文 先看这次示例教学的项目 目录结构: (当然resource里面的i18n文件夹和三个properties文件也是要我们自己建的,但是 那个Resource Bundle 不用管,这个在yml加上对应配置项自动生成的. 不清楚的继续往下看教学就好) 开始敲(CV)代码: pom.xml 依赖: <dependencies> <dependency> <groupId&

  • mongodb 数据生成Insert 语句的示例代码

    执行: db.getCollection('cap.published').find({}).forEach(function(item){     print( 'db.getCollection("cap.published").insert(' + tojson(item) + ');' ); }); 返回结果: db.getCollection("cap.published").insert({ "_id" : NumberLong(&q

  • Qt实现边加载数据边显示页面的示例代码

    目录 1.定义显示定时器 1:定义定时器 2:定时器调用 3:定时器加载数据 2.线程加载数据 3.实时呈现加载进度 做过C++开发的人们都知道,无论是MFC框架还是QT框架,实现加载数据的等待效果都是很麻烦的,不像WEB端轻轻松松一句代码就搞定了.而我们这些做C++的,最常用的方法就是开线程了. 刚开始,我也是采用的开线程的方式,但是,想象总是与事实相悖的. 假设页面展示的数据比较多,导致加载页面时间较长,用户体验度很差,点击了触发按钮之后很长时间才会有响应,总让人误会程序死机了,但真正的原因

  • SpringMVC+Spring+Mybatis实现支付宝支付功能的示例代码

    本博客详细介绍了如何使用ssm框架实现支付宝支付功能.本文章分为两大部分,分别是「支付宝测试环境代码测试」和「将支付宝支付整合到ssm框架」,详细的代码和图文解释,自己实践的时候一定仔细阅读相关文档. 教程源代码:https://github.com/OUYANGSIHAI/sihai-maven-ssm-alipay 一.支付宝测试环境代码测试: 1.下载电脑网站的官方demo以及查看参考相关文档: 地址:https://docs.open.alipay.com/270/106291/ 2.下

  • Java利用POI实现导入导出Excel表格示例代码

    介绍 Jakarta POI 是一套用于访问微软格式文档的Java API.Jakarta POI有很多组件组成,其中有用于操作Excel格式文件的HSSF和用于操作Word的HWPF,在各种组件中目前只有用于操作Excel的HSSF相对成熟.官方主页http://poi.apache.org/index.html,API文档http://poi.apache.org/apidocs/index.html 实现 已经在代码中加入了完整的注释. import java.io.FileInputSt

  • django formset实现数据表的批量操作的示例代码

    什么是formset 我们知道forms组件是用来做表单验证,更准确一点说,forms组件是用来做数据库表中一行记录的验证.有forms组件不同,formset是同科同时验证表中的多行记录,即formset是做表单批量验证的组件. 批量添加 首先要实例化formset对象,对象初始化时需要提供操作表的forms表单类,参数 extra 用来显示验证几行数据.将实例化的formset对象传递给前端页面,前端模板通过两层循环:第一层循环form,第二层循环form中的字段.当GET请求时,直接将实例

  • jQuery将多条数据插入模态框的示例代码

    //Bootstrap模态框(局部) <div class="modal fade" id="orderDetail"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> </div> <div class="modal

  • js动态创建、删除表格示例代码

    生成一个2000*5的表格,每个单元格的内容是行号+逗号+列号 方法一:使用createElement生成表格,使用insertRow和insertCell方法生成行列,单元格的内容使用innerHTML属性进行填充. 方法二:使用createElement生成表格,使用CreateElement方法生成行列,单元格的内容使用了createTextNode方法填充. 方法三:拼接表格innerHTML属性的字符串,使用字符串 += 操作符链接字符串 方法四:拼接表格innerHTML属性的字符串

随机推荐