导出excel

导出excel和到导入类似,不过在此之前我们可以先建立一个模板或者你自己代码写模板都行,这里我就直接用写好的一个模板

在WEB-INFO下面创建upload文件夹放模板使用。

例如:

// 第一步,创建一个webbook对应Excel文件  
Workbook wb = WorkbookFactory.create(new FileInputStream(contextPvd.getAppRealPath("/upload/xxx/xxxx.xls")));

// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet 

Sheet sheet = wb.getSheetAt(0); 

//第三步,设置模板样式这里只是添加边框及居中效果

CellStyle cellStyle = wb.createCellStyle();
       cellStyle.setBorderBottom(CellStyle.BORDER_THIN); //下边框    
        cellStyle.setBorderLeft(CellStyle.BORDER_THIN);//左边框    
        cellStyle.setBorderTop(CellStyle.BORDER_THIN);//上边框    
        cellStyle.setBorderRight(CellStyle.BORDER_THIN);//右边框
        cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);//垂直居中
        cellStyle.setWrapText(true);//自动换行
        cellStyle.setAlignment(CellStyle.ALIGN_CENTER);//对齐方式

// 第四步,写入实体数据 实际应用中这些数据从数据库得到
List<XXX> list= xxxService.queryXxxList(参数);

//第五步,获取行设置内容

 Row row = sheet.getRow((int) 0);

for (int i = 0; i < list.size(); i++) {
            row = sheet.createRow((int) i + 3);  
            SjunitprojectBean sjunitprojectBean = sjunitprojectList.get(i);
            // 创建单元格,并设置值  
            row.setHeight((short)600);
            Cell cell = row.createCell(0);
            cell.setCellValue(i+1);
            cell.setCellStyle(cellStyle);  
            
            cell = row.createCell(1);
            cell.setCellValue(sjunitprojectBean.getUpname());
            cell.setCellStyle(cellStyle1); 
        }

//第六步,设置完成后便可导出操作

       //获取文件名 自己定义
        String fileName = "xxx.xls";
        //根据文件名获取输出文件对应类型
        String contentType = ServletActionContext.getServletContext().getMimeType(fileName);
        //使用输出流写文件
        ServletOutputStream out = ServletActionContext.getResponse().getOutputStream();
        //设置数据类型
        ServletActionContext.getResponse().setContentType(contentType);
        //获取客户端浏览器类型 解决中文乱码
        String header = ServletActionContext.getRequest().getHeader("User-Agent");
        fileName = FileUtils.encodeDownloadFilename(fileName, header);
        ServletActionContext.getResponse().setHeader("content-disposition", "attachment;filename="+fileName);
        //使用workbook写出
        workbook.write(out);

这里的FileUtils工具类自己添加即可代码如下

/**
         * 下载文件时,针对不同浏览器,进行附件名的编码
         *
         * @param filename
         *            下载文件名
         * @param agent
         *            客户端浏览器
         * @return 编码后的下载附件名
         * @throws IOException
         */
        public static String encodeDownloadFilename(String filename, String agent)
                throws IOException {
            if (agent.contains("Firefox")) { // 火狐浏览器
                filename = "=?UTF-8?B?"
                        + new BASE64Encoder().encode(filename.getBytes("utf-8"))
                        + "?=";
                filename = filename.replaceAll("\r\n", "");
            } else { // IE及其他浏览器
                filename = URLEncoder.encode(filename, "utf-8");
                filename = filename.replace("+"," ");
            }
            return filename;
        }

以上便是简单的excel导出功能希望对大家有所帮助

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值