ssm架构POI—excel表格导出

点击查看excel文件导入
POI全称 Poor Obfuscation Implementation,利用POI接口可以通过JAVA操作Microsoft office 套件工具的读写功能。官网:http://poi.apache.org ,POI支持office的所有版本。

POI maven依赖包
<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.16</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>3.16</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-excelant</artifactId>
            <version>3.16</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-examples</artifactId>
            <version>3.16</version>
        </dependency>

前台数据

<a href="${pageContext.request.contextPath}/customer/excel" class="coolbg">&nbsp;导出Excel&nbsp;</a>

后台数据

 @Autowired
    private CustomerService customers;
    //将页面数据导出excle表格里 response才会执行,用ajax        	//response不执行
    @RequestMapping(value = "/excel",method = RequestMethod.GET)
    public String exportExcel(HttpServletResponse response) throws UnsupportedEncodingException{
    //固定写法 复制就行  这里写导出excel的名字 设置下载在浏览器端,等用户下载
        String fileName = "customer.xls";
        response.setHeader("Content-disposition", "attachment;filename="
                + new String(fileName.getBytes("gb2312"), "ISO8859-1"));//设置文件头编码格式
        response.setContentType("APPLICATION/OCTET-STREAM;charset=UTF-8");//设置类型
        response.setHeader("Cache-Control", "no-cache");//设置头
        response.setDateHeader("Expires", 0);//设置日期头
        //获取数据库查询的所有数据
        List<Customer> list = customers.allCustomer();
        //将查询结果带到页面 回显函数使用
        Map<String,Object> map=new HashMap();
        // 创建导出表格的对象
        Workbook wb=new HSSFWorkbook();
        // 创建表
        Sheet sheet = wb.createSheet("sheet1");
        //获取表的第一行元素,也就是0行
        Row row = sheet.createRow(0);
        // 创建存放列的数组
        Cell[] cell=new HSSFCell[5];
        for (int i = 0; i <cell.length; i++) {
            //吧每一列放到数组中
            cell[i]=row.createCell(i);
        }
        //这个是写的标题头
        //给第0行第一列元素赋值
        cell[0].setCellValue("序号");
        //给第0行第二列元素赋值
        cell[1].setCellValue("联系人");
        //给第0行第三列元素赋值
        cell[2].setCellValue("公司名称");
        //给第0行第四列元素赋值
        cell[3].setCellValue("添加时间");
        //给第0行第五列元素赋值
        cell[4].setCellValue("联系电话");
        try {
            //循环获取从数据库中的集合每个pojo对象的数据
        for (int i = 0; i < list.size(); i++) {
            //查询的每个对象的数据
            Customer customer = list.get(i);
            //设置要插入的行为i+1(就是标题下的第一行)
            Row row1 = sheet.createRow(i+1);
            //创建存放列的数组
            Cell[] cell2=new HSSFCell[5];
            for (int j = 0; j <cell.length; j++) {
                //吧每一列放到数组中
                cell2[j]=row1.createCell(j);
            }
            //给第i+1行第一列元素赋值(默认都是在1开头 所以i+1)
            cell2[0].setCellValue(i+1);
            //给第i+1行第二列元素赋值     吧对象中的数据写入列中
            cell2[1].setCellValue(customer.getCompanyperson());
            //给第i+1行第三列元素赋值     吧对象中的数据写入列中
            cell2[2].setCellValue(customer.getComname());
            //给第i+1行第三列元素赋值     吧对象中的数据写入列中
            cell2[3].setCellValue(customer.getAddtime());
            //给第i+1行第四列元素赋值     吧对象中的数据写入列中
            cell2[4].setCellValue(customer.getComphone());
        }
             //输出到下载人的电脑上
            wb.write(response.getOutputStream());
            //刷新
            response.getOutputStream().flush();
            //关闭
            response.getOutputStream().close();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                if (wb!=null){
                    //关闭流
                    wb.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return "redirect:/customer.jsp";
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值