java实现excel导出

此功能是使用POI进行实现的

POI简介:Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

HSSF - 提供读写Microsoft Excel格式档案的功能。

XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。

HWPF - 提供读写Microsoft Word格式档案的功能。

HSLF - 提供读写Microsoft PowerPoint格式档案的功能。

HDGF - 提供读写Microsoft Visio格式档案的功能。

pom

<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.9</version>
        </dependency>

代码如下

    public void daochu (HttpServletRequest request,HttpServletResponse response){
        //String sql="select * from T_W_ACCIDENT_TEST";
        //List<Map<String, Object>> list2 = jdbctemplate.queryForList(sql);
        //System.out.println(list2);

//文件第一行名字
        String[] title={'a','b','c'};

//文件名字
        String name ="车险意外超龄承保.xls";
        try {
            ExportExcel.CreateExcel(list, request, response,title,name);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

package com.picc.demand.excel;


public class ExportExcel {

    public static void CreateExcel(List<Map<String, Object>> data,HttpServletRequest request, HttpServletResponse response, String[] title, String name) throws ParseException {
        // 获取配置文件对象数据
        // 第一步,创建一个webbook,对应一个Excel文件
        HSSFWorkbook wb = new HSSFWorkbook();
        // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
        HSSFSheet sheet = wb.createSheet("1");
        sheet.setDefaultColumnWidth(20); 
        // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
        HSSFRow row = sheet.createRow((int) 0);
        // 第四步,创建单元格,并设置值表头 设置表头居中
        HSSFCellStyle style = wb.createCellStyle();
        //style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        HSSFCell cell = null;
        for (int i = 0; i < title.length; i++){
            cell = row.createCell(i);
            cell.setCellValue(title[i]);
            cell.setCellStyle(style);
        }
        
        // 第五步,写入实体数据 实际应用中这些数据从数据库得到,
        for (int i = 0; i < data.size(); i++) {
            row = sheet.createRow((int) i + 1);
            Map<String, Object> map = data.get(i);
            Iterator<String> iterator = map.keySet().iterator();
             while (iterator.hasNext()){// 循环取键值进行判断
                    String key = iterator.next();// 键
                    if(("DELETE_FLAG").equals(key)||("UPDATE_USER").equals(key)||("UPDATE_DATE").equals(key)||("CREATE_USER").equals(key)||("CREATE_DATE").equals(key)||("RN").equals(key)){
                        iterator.remove();// 移除map中以a字符开头的键对应的键值对
                    }
                }
            Set<String> dataName=map.keySet();
            HSSFCell cell2 = null;
            int n=0;
            
            for (String string : dataName) {
                cell2 = row.createCell(n);
                cell2.setCellValue((String) map.get(string));
                cell2.setCellStyle(style);
                n++;
            }
        }
        OutputStream out = null;    
        try {        
            out = response.getOutputStream();    
            //UUID.randomUUID().toString()
            String  fileName=name;// 文件名    
            response.setContentType("application/x-msdownload");    
            response.setHeader("Content-Disposition", "attachment; filename="+ URLEncoder.encode(fileName, "UTF-8"));    
            wb.write(out);
            out.close();
        } catch (Exception e) {    
            e.printStackTrace();    
        } finally {      
            try {
                out.close();      
            } catch (IOException e) {      
                e.printStackTrace();    
            }      
        }  
    }
}

导出成功 是不是很简单呢QwQ

猜你喜欢

转载自blog.csdn.net/weixin_39592397/article/details/84281228