execl 导出

还得两年前入职一家公司的时候就做的是execl的导入导出,但是那时候要兼容公司内部的平台,整了10天才整好,感觉自己是真的垃圾。
刚好项目里又有一个导出要实现,于是就分配到了我这边,然后按照惯例,遇事不决,就问百度,但是感觉最近博客上复制的人很多,一搜都是千篇一律的,一人写好,万人复制,有用的东西着实是少,改变这个现状,从我做起,决定将我做好的也给大家分享一下。

先给大家看下我要做成的样子
在这里插入图片描述
说下实现的重点吧,就是在设置单元格样式的时候,一定要先设置样式再赋值,不然的话样式不生效,就直接上代码吧

//创建HSSFWorkbook对象
HSSFWorkbook wb = new HSSFWorkbook();
//建立sheet对象
HSSFSheet sheet = wb.createSheet(“第一个sheet页”);
//在sheet里创建第一行,参数为行索引
HSSFRow row1 = sheet.createRow(0);
//创建单元格
HSSFCell cell = row1.createCell(0);

//设置样式  我是设置死了每个单元格宽度是4500,尝试过自动换行的,但是感觉样式有点丑,跟我这个不符合就没有使用了
sheet.setColumnWidth(1,4500);
sheet.setColumnWidth(2,4500);
sheet.setColumnWidth(3,4500);
sheet.setColumnWidth(4,4500);
sheet.setColumnWidth(5,9000);
sheet.setColumnWidth(6,9000);
sheet.setColumnWidth(7,9000);
sheet.setColumnWidth(8,9000);

/**
自动换行的
CellStyle cs = wb.createCellStyle();
 //关键
cs.setWrapText(true); 
//单元格应用设置的style
cell.setCellStyle(cs);   
*/

//水平居中  这个居中你只要设置了第一行,其他就会跟着一起居中了,下面的就不需要接着设置了 
row1.createCell(0).getCellStyle().setAlignment(HorizontalAlignment.CENTER);
//垂直居中
row1.createCell(0).getCellStyle().setVerticalAlignment(VerticalAlignment.CENTER);

//班级名称
cell.setCellValue(“三班”);
//合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 1));
//在sheet里创建第二行
HSSFRow row2 = sheet.createRow(1);
row2.createCell(0).setCellValue(“张三”);
sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 4));

其他的就没有什么了,上边已经可以实现单元格合并的操作了,要注意的是,单元格合并的时候不能有重复的不然会报错。

 //输出Excel文件
        try {
            OutputStream output = response.getOutputStream();
            response.reset();
            response.setHeader("Content-disposition", "attachment; filename=student.xls");
            response.setContentType("application/msexcel");
            wb.write(output);
            output.close();
        } catch (IOException e) {
            log.error(String.valueOf(e));
        }

这个样就可以直接将文件导出来了,其他的感觉没什么难点了,就要写的时候细心一点不要造成单元格重复占用的情况就好了。

欢迎各位大佬指正交流!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值