• java导出数据EXCEL的工具类


    一、springboot中可以使用

          pom文件

    <dependency>
       <groupId>org.apache.poi</groupId>
       <artifactId>poi</artifactId>
       <version>4.1.1</version>
    </dependency>

         工具类代码

    import org.apache.poi.hssf.usermodel.*;
    import org.apache.poi.ss.usermodel.HorizontalAlignment;
    import org.apache.poi.ss.usermodel.VerticalAlignment;
    import javax.servlet.http.HttpServletResponse;
    import java.io.OutputStream;
    import java.util.List;
    import java.util.Map;
    
    
    public class ObjectExcel {
    
    
    
        public static void buildExcelDocument(Map<String, Object> model,String fileName,HttpServletResponse response) throws Exception {
            HSSFWorkbook workbook = new HSSFWorkbook();
            fileName=fileName+DateUtils.getDateTime("HHmmss")+".xls";
            HSSFSheet sheet;
            HSSFCell cell;
            response.setContentType("application/octet-stream");
            response.setHeader("Content-Disposition", "attachment;filename="+new String(fileName.getBytes("utf-8"),"ISO-8859-1"));
            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);
            HSSFRow 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);
            List<Map<String,Object>> varList = (List<Map<String,Object>>) model.get("varList");
            int varCount = varList.size();
            for(int i=0; i<varCount; i++){
                HSSFRow rows = sheet.createRow(i+1);
                Map<String,Object> vpd = varList.get(i);
         /*       int j=0;
                for(String key : vpd.keySet()) {
                    HSSFCell  cells = rows.createCell(j);
                    cells.setCellStyle(contentStyle);
                    cells.setCellValue(String.valueOf(vpd.get(key)));
                    j++;
                }*/
               for(int j=0;j<len;j++){
                    String varstr = vpd.get("var"+(j+1)) != null ? String.valueOf(vpd.get("var"+(j+1))) : "";
                    HSSFCell  cells = rows.createCell(j);
                    cells.setCellStyle(contentStyle);
                    cells.setCellValue(varstr);
                }
    
            }
                OutputStream out = response.getOutputStream();
                workbook.write(out);
                out.close();
                workbook.close();
        }
    
    
    }

     调用案例

     

    二、基于springmvc

    1.本工具类继承于  spring-webmvc-4.0.4jar文件心中的一个类   AbstractExcelView

    2.代码如下

    package com.skjd.util;
    
    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.HSSFFont;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.springframework.web.servlet.view.document.AbstractExcelView;
    
    import com.skjd.util.PageData;
    import com.skjd.util.Tools;
    /**
    * 导出到EXCEL
    * 类名称:ObjectExcelView.java
    * 类描述: 
    * @author FH
    * 作者单位: 
    * 联系方式:
    * @version 1.0
     */
    public class ObjectExcelView extends AbstractExcelView{
    
        @Override
        protected void buildExcelDocument(Map<String, Object> model,
                HSSFWorkbook workbook, HttpServletRequest request,
                HttpServletResponse response) throws Exception {
            // TODO Auto-generated method stub
            Date date = new Date();
            String filename = Tools.date2Str(date, "yyyyMMddHHmmss");
            HSSFSheet sheet;
            HSSFCell cell;
            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(HSSFCellStyle.ALIGN_CENTER);
            headerStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
            HSSFFont headerFont = workbook.createFont();    //标题字体
            headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
            headerFont.setFontHeightInPoints((short)11);
            headerStyle.setFont(headerFont);
            short width = 20,height=25*20;
            sheet.setDefaultColumnWidth(width);
            for(int i=0; i<len; i++){ //设置标题
                String title = titles.get(i);
                cell = getCell(sheet, 0, i);
                cell.setCellStyle(headerStyle);
                setText(cell,title);
            }
            sheet.getRow(0).setHeight(height);
            
            HSSFCellStyle contentStyle = workbook.createCellStyle(); //内容样式
            contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
            List<PageData> varList = (List<PageData>) model.get("varList");
            int varCount = varList.size();
            for(int i=0; i<varCount; i++){
                PageData vpd = varList.get(i);
                for(int j=0;j<len;j++){
                    String varstr = vpd.getString("var"+(j+1)) != null ? vpd.getString("var"+(j+1)) : "";
                    cell = getCell(sheet, i+1, j);
                    cell.setCellStyle(contentStyle);
                    setText(cell,varstr);
                }
                
            }
            
        }
    
    }

    3.特此送上案例如下

    /**
         * 导出数据
         * @return
         * @throws Exception 
         */
        @RequestMapping(value="/excel")
        public ModelAndView excel(Page page) throws Exception{
            logBefore(logger, "导出数据");
            ModelAndView mv = this.getModelAndView();        
            PageData pd = new PageData();
            pd = this.getPageData();
            page.setPd(pd);
            Map<String,Object> dataMap = new HashMap<String,Object>();
            List<String> titles = new ArrayList<String>();
            titles.add("订单号");
            titles.add("乘客姓名");
            titles.add("用户手机号");
            titles.add("状态");
            titles.add("类型");
            titles.add("司机姓名");
            titles.add("司机手机号");
            titles.add("车牌号");
            titles.add("订单创建时间");
            titles.add("订单结束时间");
            titles.add("里程");
            titles.add("费用");
            dataMap.put("titles", titles);
            List<PageData> orderList = orderService.datalist(page);
            List<PageData> varList = new ArrayList<PageData>();
            for(int i=0;i<orderList.size();i++){
                PageData vpd = new PageData();
                vpd.put("var1", orderList.get(i).getString("ordernumber"));
                vpd.put("var2", orderList.get(i).getString("customer_name"));
                vpd.put("var3", orderList.get(i).getString("customer_phone"));
                if(orderList.get(i).get("order_status")!=null){                
                    if("0".equals(orderList.get(i).get("order_status").toString())){vpd.put("var4", "生成订单");}
                    if("1".equals(orderList.get(i).get("order_status").toString())){vpd.put("var4", "司机已接单");}
                    if("2".equals(orderList.get(i).get("order_status").toString())){vpd.put("var4", "确认上车");}
                    if("3".equals(orderList.get(i).get("order_status").toString())){vpd.put("var4", "行程结束");}
                    if("4".equals(orderList.get(i).get("order_status").toString())){vpd.put("var4", "完成订单");}
                    if("5".equals(orderList.get(i).get("order_status").toString())){vpd.put("var4", "到达乘客上车点");}
                    if("99".equals(orderList.get(i).get("order_status").toString())){vpd.put("var4", "取消订单");}
                }
                
                if(orderList.get(i).get("order_type")!=null){
                    
                    if("1".equals(orderList.get(i).get("order_type").toString())){vpd.put("var5", "实时专车");}
                    if("2".equals(orderList.get(i).get("order_type").toString())){vpd.put("var5", "预约专车");}
                    if("3".equals(orderList.get(i).get("order_type").toString())){vpd.put("var5", "送机");}
                    if("4".equals(orderList.get(i).get("order_type").toString())){vpd.put("var5", "接机");}
                }
                
                vpd.put("var6", orderList.get(i).getString("name"));
                vpd.put("var7", orderList.get(i).getString("phone"));
                vpd.put("var8",  orderList.get(i).getString("license_number"));
                
                if(orderList.get(i).get("create_time")!=null){vpd.put("var9", orderList.get(i).get("create_time").toString());}
                
                if(orderList.get(i).get("end_time")!=null){vpd.put("var10", orderList.get(i).get("end_time").toString());}
                
                /*vpd.put("ordernumber", value);*/
                if(orderList.get(i).get("actual_price")!=null){vpd.put("var12", orderList.get(i).get("actual_price").toString());}
                
                varList.add(vpd);
            }
            dataMap.put("varList", varList);
            ObjectExcelView erv = new ObjectExcelView();
            mv = new ModelAndView(erv,dataMap);
            return mv;
            
        }
        
        

    4.加上截图进行说明

     

     

  • 相关阅读:
    python加载csv数据
    Android项目依赖库管理方式简介
    Android PhotoView基本功能实现
    Android ListView的header footer设置visibility gone不起作用
    [干货][EMIT]千行代码实现代理式AOP+属性的自动装配
    Emit实现DataRow转化成强类型的T
    有关docker新版的icc、iptables的一个巨坑
    Mac神器Iterm2的Shell Integration的用法和注意事项
    生成ssl证书文件
    python3 module中__init__.py的需要注意的地方
  • 原文地址:https://www.cnblogs.com/qq376324789/p/9118254.html
Copyright © 2020-2023  润新知