• java实现使用poi导出excel


    1.首先下载用的jar包

      poi-4.1.2.jar

      commons-math3-3.6.1.jar

           jar包下载地址:http://poi.apache.org/download.html

           根据系统下载对应的版本

     2.java后端 

    /**

    * 获得excel表头信息

    */

    private static HSSFSheet getHssfSheet (HSSFSheet sheet,String tableHeader[],short cellNumber,HSSFFont font,HSSFCellStyle style) 

    {

    HSSFHeader header = sheet.getHeader();

    header.setCenter("");

    HSSFRow row = sheet.createRow(0); 

            row.setHeight((short)400);

    //sheet的头

            for(int k = 0;k < cellNumber;k++){

                HSSFCell cell = row.createCell((short) k);//创建第0行第k列 

                cell.setCellValue(tableHeader[k]);//设置第0行第k列的值 

                sheet.setColumnWidth((short)k,(short)7000);//设置列的宽度 

                font.setColor(HSSFFont.COLOR_NORMAL); // 设置单元格字体的颜色. 

                font.setFontHeight((short)350); //设置单元字体高度 

                style.setFont(font);//设置字体风格 

                cell.setCellStyle(style); 

            } 

    return  sheet;

    }

    然后在controller里写

    //查询要导出的信息

    List<CkRegistInfo> ckRegistInfos = bdShouYeService.selectGaiByCkRegistInfo(bdShouYe);

    //表头

    String tableHeader[]={"测试1","测试2","测试3","测试4"}; 

    就是excel的这样

    //表的列数

    short cellNumber = (short) tableHeader.length;

    //创建一个excel

    HSSFWorkbook workbook = new HSSFWorkbook();

    //设置表头类型

    HSSFCellStyle style = workbook.createCellStyle();

    style.setAlignment(HorizontalAlignment.CENTER);//居中

    //设置字体

    HSSFFont font = workbook.createFont();

    //创建一个sheet

    HSSFSheet sheet = workbook.createSheet("1");

    HSSFSheet sheet2 = workbook.createSheet("2");

    就对应excel

    //将表头写进excel

    sheet = getHssfSheet(sheet, tableHeader, cellNumber, font, style);

    sheet2 = getHssfSheet(sheet2, tableHeader, cellNumber, font, style);

    //插入数据

    for (int i = 0; i < ckRegistInfos.size(); i++) {

    //得到当前具体信息

    CkRegistInfo ckRegistInfo = ckRegistInfos.get(i);

    //获取下一行

    HSSFRow rows = sheet.createRow((short)(i+1));

    rows.setHeight((short)400);

    //测试1

    HSSFCell cell1 = rows.createCell((short)0);

    cell1 .setCellValue(ckRegistInfo.getName());

    cell1 .setCellStyle(style);

    //测试2

    HSSFCell cell2= rows.createCell((short)1);

    cell2.setCellValue(ckRegistInfo.getCardId());

    cell2.setCellStyle(style);

    //测试3

    HSSFCell cell3= rows.createCell((short)2);

    cell3.setCellValue(ckRegistInfo.getSex());

    cell3.setCellStyle(style);

    //测试4

    HSSFCell cell4= rows.createCell((short)3);

    cell4.setCellValue(ckRegistInfo.getRegistTime());

    cell4.setCellStyle(style);

    //写入流,返回信息

    String fileName ="体检缺项信息";

     try{

           BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());

           response.setHeader("Content-disposition","attachment;filename="+new String(fileName.getBytes(),"ISO-8859-1"));//filename是下载的xls的名 

           workbook.write(out); 

           out.flush(); 

           out.close();

           workbook.close();

     } catch (Exception e) {

             e.printStackTrace();

     }

    3.前端

    function Excel()

    {

    var url = url ;

    var xhr = new XMLHttpRequest();

    xhr.open('post', url, true);

    xhr.responseType = 'blob';

    xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');

    xhr.onload = function (e) {

    if (this.status == 200) {

    var blob = this.response;

    var file_name='信息登记.xls';

     // for IE

    if (window.navigator && window.navigator.msSaveOrOpenBlob) {

    document.getElementById('selectGaiExcel').disabled=false;

    window.navigator.msSaveOrOpenBlob(blob, file_name);

    }

    // for Non-IE (chrome, firefox etc.)

    else {

    document.getElementById('selectGaiExcel').disabled=false;

    var a = document.createElement('a');

    document.body.appendChild(a);

    a.style = 'display: none';

    var url = window.URL.createObjectURL(blob);

    a.href =  url;

    a.download = file_name;

    a.click();

    a.remove();

    window.URL.revokeObjectURL(url);

    }

    }

    }

    xhr.send(JSON.stringify({

    "beginHappenTime" : beginHappenTime,

    "endHappenTime":endHappenTime

    }));

    }

  • 相关阅读:
    MYSQL读写分离
    AIR loadbytes executable code error 解决办法
    文本处理常用命令
    使用awk找出两个大文件的相同部分
    nginx修改php.ini无效的解决办法
    python 正则表达式反向引用的问题
    解决memcached错误:Catastrophic: event fd doesn't match conn fd
    php编译iconv错误解决办法
    grep剔除两个文件中相同部分
    周末闲话
  • 原文地址:https://www.cnblogs.com/li19950227/p/13330920.html
Copyright © 2020-2023  润新知