zoukankan      html  css  js  c++  java
  • Spring POI 导出数据到Excel文件

    /**
    * 导出到Excel
    * @Title: exportExcel
    * @param String pn,HttpSession session
    * @return ModelAndView 返回类型
    * @author
    * @throws Exception
    */
    @SuppressWarnings("unchecked")
    @RequestMapping(value="/export-uarea/{pn}",method=RequestMethod.GET)
    @ResponseBody
    public ModelAndView exportExcel(@PathVariable("pn") String pn,HttpSession session) throws Exception{
    ModelAndView modelAndView = new ModelAndView();
        // 创建Map对象,用于存入列名字与列值
        Map<String,Object> dataMap = new HashMap<String,Object>();
        // 创建titles对象,对象中的值为Excel的列名
        List<String> titles = new ArrayList<String>();
        // 向titles对象存入列名 start
        titles.add("区域名称"); //1
        titles.add("区域编码"); //2
        titles.add("描述说明"); //3
        titles.add("删除标志"); //4
        titles.add("记录日期"); //5
        titles.add("记录人"); //6
        titles.add("修改日期"); //7
        titles.add("修改人"); //8
        titles.add("备注"); //9
        // 向titles对象存入列名 end

        // 将dataMap对象存入Excel表列名的数组
        dataMap.put("titles", titles);
        // 获取配件订单列表
        List<UArea> uAreaList = null;
        if("-1".equals(pn)){
          uAreaList = uAreaService.queryAllUArea();
        }else{
          uAreaList = (List<UArea>) session.getAttribute("uAreas");
        }
        List<Map<Integer,Object>> listMap = new ArrayList<Map<Integer,Object>>();
        for(int i=0;i<uAreaList.size();i++){
          Map<Integer, Object> map = new HashMap<Integer, Object>();
          map.put(0, uAreaList.get(i).getAreaName()); //1
          map.put(1, uAreaList.get(i).getAreaCode()); //2
          map.put(2, uAreaList.get(i).getDescription()); //3
          map.put(3, uAreaList.get(i).getDeleteFlag()); //4
          map.put(4, uAreaList.get(i).getInputDate()); //5
          map.put(5, uAreaList.get(i).getInputId()); //6
          map.put(6, uAreaList.get(i).getUpdateDate()); //7
          map.put(7, uAreaList.get(i).getUpdateId()); //8
          map.put(8, uAreaList.get(i).getRemark()); //9
          listMap.add(map);
        }
        dataMap.put("listMap", listMap);
        // 创建Excel工具类的 excelView对象
        ObjectExcelView excelView = new ObjectExcelView();
        // 创建Excel表
        modelAndView = new ModelAndView(excelView,dataMap);
        return modelAndView;
      }

    返回ModelAndView对象  会自动加载ObjectExcelView();

    package com.sinosoft.autopart.platform.common.util;

    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.List;
    import java.util.Map;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFDataFormat;
    import org.apache.poi.hssf.usermodel.HSSFFont;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.ss.usermodel.HorizontalAlignment;
    import org.apache.poi.ss.usermodel.VerticalAlignment;
    import org.springframework.web.servlet.view.document.AbstractExcelView;

    /**
    * 导入到EXCEL 类名称:ObjectExcelView.java
    * @author link
    *
    */
    public class ObjectExcelView extends AbstractExcelView {

    @SuppressWarnings("unchecked")
    @Override
    protected void buildExcelDocument(Map<String, Object> model, HSSFWorkbook workbook, HttpServletRequest request,
    HttpServletResponse response) throws Exception {
      Date date = new Date();
      String filename = this.dateToStr(date, "yyyyMMddHHmmss");
      HSSFSheet sheet;
      HSSFCell cell;
      HSSFRow row;
      response.setContentType("application/octet-stream");
      response.setHeader("Content-Disposition", "attachment;filename=" + filename + ".xls");
      sheet = workbook.createSheet("sheet1");

      List<String> titles = (List<String>) model.get("titles");
      int len = titles.size();
      HSSFCellStyle headerStyle = workbook.createCellStyle(); // 标题样式
      headerStyle.setAlignment(HorizontalAlignment.CENTER);;
      headerStyle.setVerticalAlignment(VerticalAlignment.CENTER);;
      HSSFFont headerFont = workbook.createFont(); // 标题字体
      headerFont.setBold(true);
      headerFont.setFontHeightInPoints((short) 11);
      headerStyle.setFont(headerFont);
      short width = 20, height = 25 * 20;
      sheet.setDefaultColumnWidth(width);
      row = sheet.createRow(0);
      for (int i = 0; i < len; i++) { // 设置标题
      String title = titles.get(i);
      cell = row.createCell(i);
      cell.setCellStyle(headerStyle);
      cell.setCellValue(title);
      }
      sheet.getRow(0).setHeight(height);

      HSSFCellStyle contentStyle = workbook.createCellStyle(); // 内容样式
      contentStyle.setAlignment(HorizontalAlignment.CENTER);
      HSSFDataFormat format= workbook.createDataFormat();
      contentStyle.setDataFormat(format.getFormat("yyyy-mm-dd HH:MM:SS"));
      HSSFFont contentFont = workbook.createFont(); // 标题字体
      contentFont.setFontHeightInPoints((short) 11);
      contentStyle.setFont(contentFont);
      List<Map<Integer, Object>> listMap = (List<Map<Integer, Object>>) model.get("listMap");
      int varCount = listMap.size();
      for (int i = 0; i < varCount; i++) {
        Map<Integer, Object> uArea = listMap.get(i);
        row = sheet.createRow(i+1);
        for(int j=0;j<len;j++){
          cell = row.createCell(j);
          cell.setCellStyle(contentStyle);
          if(j==len-3||j==len-5){
            cell.setCellValue((uArea.get(j)!=null?(Date)uArea.get(j):new Date(1900-01-01)));
          }else{
            cell.setCellValue((String)(uArea.get(j)!=null?uArea.get(j):""));
          }
        }
      }
    }
    /**
    * 按照参数format的格式,日期转字符串
    * @param date
    * @param format
    * @return
    */
    public String dateToStr(Date date,String format){
        if(date!=null){
          SimpleDateFormat sdf = new SimpleDateFormat(format);
          return sdf.format(date);
        }else{
          return "";
        }
      }
    }

  • 相关阅读:
    day70 django中间件
    day69 cookie与session
    day68 form组件
    day67 前后端数据交互
    day65 django进阶(1)
    day64 django模型层
    day63 django入门(4)
    day62 作业
    Python正课142 —— DRF 进阶3 路由与认证
    一文搞懂什么是IaaS, PaaS和SaaS
  • 原文地址:https://www.cnblogs.com/gaofz/p/7692128.html
Copyright © 2011-2022 走看看