zoukankan      html  css  js  c++  java
  • JXL:导出Excel

    Excel简介

    目前市面上的Excel分为两个大版本2003、2007两个版本,区别如下:

    2003 2007
    后缀 xls xlsx
    结构 二进制格式 xml类型结构
    单sheet数量 行:65535;列:256 行1048576;列:16384
    特点 存储容量有限 基于xml压缩,占用空间小

    常用Excel操作工具

    常见用于操作Excel的方式有2种:JXL和POI

    JXL

    JXL只能对Excel进行操作,属于比较老的框架,它只支持到Excel 95-2000的版本,局限性较大。现在已经停止更新和维护。(不推荐工作中使用)

    POI

    POI是apache的项目,可对微软的Word,Excel,PPT进行操作,包括office2003和2007,Excle2003和2007。
    poi现在一直有更新。所以现在主流使用POI。

    Apache POI是Apache软件基金会的开源项目,由Java编写的免费开源的跨平台的 Java API,Apache
    POI提供API给Java语言操作Microsoft Office的功能。

    API对象介绍
    工作簿 : WorkBoo (HSSFWordBook : 2003版本,XSSFWorkBook : 2007级以上)
    工作表 : Sheet (HSSFSheet : 2003版本,XSSFSheet : 2007级以上)
    行 : Row (HSSFRow : 2003版本,XSSFRow : 2007级以上)
    单元格 : Cell (HSSFCell : 2003版本,XSSFCell : 2007级以上)

    使用JXL导出excel

    依赖:

            <dependency>
                <groupId>net.sourceforge.jexcelapi</groupId>
                <artifactId>jxl</artifactId>
                <version>2.6.12</version>
            </dependency>
    

    controller:

        @GetMapping("downLoadXlsByJxl")
        public void downLoadXlsByJxl(HttpServletResponse response, HttpServletRequest request){
            userService.downLoadXlsByJxl(response, request);
        }
    

    service:

        public void downLoadXlsByJxl(HttpServletResponse response, HttpServletRequest request) {
            try (ServletOutputStream outputStream = response.getOutputStream()){
                WritableWorkbook workbook= Workbook.createWorkbook(outputStream);
                WritableSheet sheet = workbook.createSheet("第一个", 0);
                //Excel表头内容
                String[] title =  new String[]{"编号", "姓名", "手机号", "入职日期", "现住址"};
                Label label;
                for (int i = 0; i < title.length; i++) {
                    label = new Label(i, 0, title[i]);
                    sheet.addCell(label);
                }
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                List<User> users = userMapper.selectAll();
                for (int i = 1; i <= users.size(); i++) {
                    User user = users.get(i - 1);
                    label = new Label(0,i, String.valueOf(user.getId()));
                    sheet.addCell(label);
    
                    label = new Label(1,i, user.getUserName());
                    sheet.addCell(label);
    
                    label = new Label(2,i, user.getPhone());
                    sheet.addCell(label);
    
                    label = new Label(3,i, sdf.format(user.getHireDate()));
                    sheet.addCell(label);
    
                    label = new Label(4,i, user.getAddress());
                    sheet.addCell(label);
                }
    
                String filename = "员工入职信息.xls";
                String str = new String(filename.getBytes(), "ISO8859-1");
                response.setHeader("content-disposition","attachment;filename="+str);
                response.setContentType("application/vnd.ms-excel");
                workbook.write();
                workbook.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    

    访问:http://localhost:8080/downLoadXlsByJxl

    下载成功:

    image-20210406112534803

    设置列宽

    //设置每一列的宽度
    sheet.setColumnView(0,5);
    sheet.setColumnView(1,5);
    sheet.setColumnView(2,15);
    sheet.setColumnView(3,10);
    sheet.setColumnView(4,25);
    
  • 相关阅读:
    使用VisualStudio进行单元测试之二
    使用VisualStudio进行单元测试之一
    ExtJS监听键盘事件:回车键实现登录功能
    PPTP无法连网
    Android深度探索.
    Android深度探索
    Android驱动开发
    window.open()的具体使用方法
    js控制的几种页面跳转和传值(转载)
    Hatching shader
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/14621463.html
Copyright © 2011-2022 走看看