poI在ssm中的例子

在写项目的时候用到了Poi赶紧记录了下来,分享一下
一.POI的简介

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。
二.核心

1.HSSF 提供读写Microsoft Excel格式档案的功能。
2.XSSF 提供读写Microsoft Excel OOXML格式档案的功能。
3. HWPF 提供读写Microsoft Word格式档案的功能。
4. HSLF 提供读写Microsoft PowerPoint格式档案的功能。
5. HDGF 提供读写Microsoft Visio格式档案的功能。

三.具体的应用

1.去官网下载所需的jar包 http://poi.apache.org/
2.核心的代码如下

    //导出excel
    @RequestMapping("/export.controller")
    public void export(String ids,HttpServletResponse response) throws IOException{
        // 只是让浏览器知道要保存为什么文件而已,真正的文件还是在流里面的数据,你设定一个下载类型并不会去改变流里的内容。
        //而实际上只要你的内容正确,文件后缀名之类可以随便改,就算你指定是下载excel文件,下载时我也可以把他改成pdf等。
        System.out.println(ids);
        response.setContentType("application/vnd.ms-excel");
        // 传递中文参数编码
        String codedFileName = java.net.URLEncoder.encode("中文","UTF-8");
        response.setHeader("content-disposition", "attachment;filename=" + codedFileName + ".xls");
        List<User> list = new ArrayList<User>();
        String[] array = ids.split(",");
        int[] id = new int[array.length];
        for (int i = 0; i < id.length; i++) {
            User user = service.getById(Integer.valueOf(array[i]));

            // 将数据添加到list中
            list.add(user);
        }
        // 定义一个工作薄
        Workbook workbook = new HSSFWorkbook();
        // 创建一个sheet页
        Sheet sheet = workbook.createSheet("学生信息");
        // 创建一行
        Row row = sheet.createRow(0);
        // 在本行赋值 以0开始
        row.createCell(0).setCellValue("编号");
        row.createCell(1).setCellValue("姓名");
        row.createCell(2).setCellValue("性别");
        row.createCell(3).setCellValue("年龄");
        // 定义样式
        CellStyle cellStyle = workbook.createCellStyle();
        // 格式化日期
        //cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));
        // 遍历输出
        for (int i = 1; i <= list.size(); i++) {
            User user1 = list.get(i - 1);
            row = sheet.createRow(i);
            row.createCell(0).setCellValue(user1.getId());
            row.createCell(1).setCellValue(user1.getName());
            row.createCell(2).setCellValue(user1.getSex());
            row.createCell(3).setCellValue(user1.getAge());

            }
        OutputStream  fOut = response.getOutputStream();
        workbook.write(fOut); 
        fOut.flush();  
        fOut.close(); 
    }

3.jsp的代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>


    <title>My JSP 'show.jsp' starting page</title>

  <script type="text/javascript" src="Jquery/jquery-1.8.2.min.js"></script>
  <script>
  function checkall(obj){

     var arr=document.getElementsByName("alls");

     for(var i=0;i<arr.length;i++){
         arr[i].checked=obj.checked;
       }
  }
  function Export(){
   alert(1);
   var ids="";
    var arr=$(":checkbox:gt(0):checked").parent().next().text();
   for(var i=0;i<arr.length;i++){
     ids+=arr[i]+",";
   }
   var idss=ids.substring(0, ids.length-1);

   location.href="export.controller?ids="+idss;

  } 
  </script>
  </head>

  <body>
   <table border="1" align="center">
      <tr>
            <td>
                <input type="button" value="导出数据" onclick="Export()"/>
            </td>
      </tr>
      <tr>
           <td><input type="checkbox" onclick="checkall(this)"/>全选</td>
           <td>编号</td>
           <td>姓名</td>
           <td>性别</td>
           <td>年龄</td>
      </tr>
      <c:forEach items="${list}" var="user">
      <tr>
           <td><input type="checkbox" name="alls"/></td>
           <td>${user.id}</td>
           <td>${user.name}</td>
           <td>${user.sex}</td>
           <td>${user.age}</td>
      </tr>
      </c:forEach>
   </table>
  </body>
</html>

4.运行项目,结果如下:(一个小例子)

excel中的展示效果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值