Excel表格导出

        小伙伴们切记不要动exportExcel和export,封装好了,直接copy调用

        只需要改动exportSoExcelData方法里面的(没有条件查询的小伙伴可以不需要第2步)

        1、表头(header1)

        2、实体类(SoilarcelsDto )我这个是条件查询、不需要条件查询的可以不带实体类

        3、去数据库查询数据,查询回来的数据放到list集合里面

        4、然后调用exportExcel方法往表格里写入数据

        5、最后调用export方法下载Excel

  @Override
    public void exportSoExcelData(HttpServletResponse response, SoiDto soiDto) {
        List<List<Object>> data1 = new ArrayList<List<Object>>();
        XSSFWorkbook workbook = new XSSFWorkbook();
        String[] header1={"省","市","区县","经度","维度"};
        List<Soils> soilList = soiMapper.findSoil(soiDto);
      for(Soils s : soilList){
        List<Object> list = new ArrayList<>();
        list.add(s.getProvince());
        list.add(s.getCity());
        list.add(s.getDistrictCounty());
       
        list.add(s.getLongitude());
        list.add(s.getLatitude());
        data1.add(list);
            }
        }
        exportExcel(workbook, 0, "信息", header1, data1);
        //原理就是将所有的数据一起写入,然后再关闭输入流。
        export(response, workbook, "信息");
    }




    /**
     * 导出多个sheet,不具有合并单元格
     * @param workbook
     * @param sheetNum   (sheet的位置,0表示第一个表格中的第一个sheet)
     * @param sheetTitle (sheet的名称)
     * @param headers    (表格的标题)
     * @param result     (表格的数据)
     * @throws Exception
     * @Title: exportExcel
     * @Description: 导出Excel的方法
     */
    public static void exportExcel(XSSFWorkbook workbook, int sheetNum, String sheetTitle, String[] headers, List<List<Object>> result)  {
       try {
           // 第一步,创建一个webbook,对应一个Excel以xsl为扩展名文件
           XSSFSheet sheet = workbook.createSheet();
           workbook.setSheetName(sheetNum, sheetTitle);
//设置列宽度大小
           sheet.setDefaultColumnWidth((short) 30);
//第二步, 生成表格第一行的样式和字体
           XSSFCellStyle style = workbook.createCellStyle();
// 设置这些样式
           style.setFillForegroundColor(HSSFColor.PALE_BLUE.index);
           style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
           style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
           style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
           style.setBorderRight(HSSFCellStyle.BORDER_THIN);
           style.setBorderTop(HSSFCellStyle.BORDER_THIN);
           style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 生成一个字体
           XSSFFont font = workbook.createFont();
           font.setColor(HSSFColor.BLACK.index);
//设置字体所在的行高度
           font.setFontHeightInPoints((short) 10);
           font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// 把字体应用到当前的样式
           style.setFont(font);
// 指定当单元格内容显示不下时自动换行
           style.setWrapText(true);
// 产生表格标题行
           XSSFRow row = sheet.createRow(0);
           for (int i = 0; i < headers.length; i++) {
               XSSFCell cell = row.createCell((short) i);
               cell.setCellStyle(style);
               XSSFRichTextString text = new XSSFRichTextString(headers[i]);
               cell.setCellValue(text.toString());
           }
// 第三步:遍历集合数据,产生数据行,开始插入数据
           if (result != null) {
               int index = 1;
               for (List<Object> m : result) {
                   row = sheet.createRow(index);
                   int cellIndex = 0;
                   for (Object str : m) {
                       XSSFCell cell = row.createCell((int) cellIndex);
                       if (Objects.isNull(str)){
                           cell.setCellValue(StringUtils.EMPTY);
                       }else {
                           cell.setCellValue(str + "");
                       }
                       cellIndex++;
                   }
                   index++;
               }
           }
       }catch (Exception e) {
           e.printStackTrace();
       }
    }



  /**
     * 配合 exportExcel使用,用于下载excel
     * @param response
     * @param wb
     * @param excelName
     */
    public static  void export(HttpServletResponse response, Workbook wb, String excelName){
        // 解决响应中文文件名乱码问题
        String fileName = "";
        try {
            fileName = new String((excelName).getBytes("gbk"), "iso-8859-1");
        } catch (UnsupportedEncodingException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        try {
//            fileName += DateUtil.format(new Date(), DateUtil.YYYYMMDDHHMMSS) + ".xls";
            fileName += DateUtil.format(new Date(), DateUtil.YYYYMMDDHHMMSS) + ".xlsx";
            // 浏览器响应下载弹框
            response.setHeader("Content-Disposition", "attachment;filename=" + fileName );
            response.setContentType("application/x-msdownload");
//        response.setHeader("Content-Disposition", "attachment;filename="+new String(fileName.getBytes("utf-8"),"iso8859-1"));
//        response.setContentType("application/ynd.ms-excel;charset=UTF-8");
            OutputStream out=response.getOutputStream();
            wb.write(out);
            out.flush();
            out.close();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值