首页 > 其他 > 详细

JXL:导出Excel

时间:2021-04-06 15:01:11      阅读:18      评论:0      收藏:0      [点我收藏+]

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

下载成功:

技术分享图片

设置列宽

//设置每一列的宽度
sheet.setColumnView(0,5);
sheet.setColumnView(1,5);
sheet.setColumnView(2,15);
sheet.setColumnView(3,10);
sheet.setColumnView(4,25);

JXL:导出Excel

原文:https://www.cnblogs.com/wwjj4811/p/14621463.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!