导出Excel的工具类

导出Excel的工具类

调用实例说明
exportByLocal(List<Bean>,{"id","name","age"}, "exp001")从本地运行导出
exportByServer(resp,List<Bean>,{"id","name","age"}, "exp001")从servlet服务器下载

Java本地上运行

 /**
     * 从本地上运行(默认保存在C盘 c:/export/)
     * @param list  封装实体类数据的集合
     * @param titles    表头的标题行
     * @param filename  生成的文件名
     * @param <T>    泛型
     * @throws Exception
     */
    public static <T> void exportByLocal(
            List<T> list, String[] titles, String filename) throws Exception {
        Workbook workbook = exportData(null,list,titles,filename);
        workbook.write(new FileOutputStream("c:/export/"+filename+".xlsx"));
        workbook.close();
    }

在servlet上运行,浏览器访问下载

/**
     * 从服务器上运行
     * @param resp  相应浏览器的对象
     * @param list  封装实体类数据的集合
     * @param titles    表头的标题行
     * @param filename  生成的文件名
     * @param <T>    泛型
     * @throws Exception
     */
    public static <T> void exportByServer(
            HttpServletResponse resp, List<T> list, String[] titles, String filename) throws Exception {
        Workbook workbook = exportData(resp,list,titles,filename);
        //3. 导出,下载
        String fileName = URLEncoder.encode(filename+".xlsx","UTF-8");
        //3.1 设置编码
        resp.setCharacterEncoding("UTF-8");
        //3.2 获取resposne输出流
        ServletOutputStream out = resp.getOutputStream();
        //3.3 设置下载响应头
        resp.setHeader("content-disposition","attachment;fileName=" + fileName);
        //3.4 导出
        workbook.write(out);
        workbook.close();
    }

依赖的方法

 //从网页中导出execl表格
    private static <T> Workbook exportData(
            HttpServletResponse resp, List<T> list, String[] titles, String filename) throws Exception {
        try {
            Workbook workbook = new XSSFWorkbook();
            Sheet sheet = workbook.createSheet("test");
            Row row = sheet.createRow(0);
            for (int i=0; i<titles.length ;i++){
                row.createCell(i).setCellValue(titles[i]);
            }
            //记录行数
            int index = 1;
            //遍历List<Bean>所有变量
            for (T classObject : list) {
                //遍历获取list的每个bean对象
                row = sheet.createRow(index++);
                //记录列数
                int cellindex = 0;
                Class<? extends T> clazz = (Class<? extends T>) classObject.getClass();
                //获取实体类对象下所有修饰的变量
                Field[] fields = clazz.getDeclaredFields();
                for (Field field : fields) {
                    field.setAccessible(true);
                    Object key = field.getName();   //变量的名称
                    Object val = field.get(classObject);  //变量的对应的值
                    System.out.println(key + "=" + val);
                    row.createCell(cellindex++).setCellValue(val == null ? "" : val.toString());
                }
            }
            return workbook;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值