POI导出excel表格(二)

1.下载所需POI的jar包,并导入项目。
poi3.9.jar下载
2.添加一个User类,用于存放用户实体,类中内容如下:

package com.mvc.po;

public class User {
    private int id;
    private String name;
    private String password;
    private int age;

    public User() {

    }

    public User(int id, String name, String password, int age) {
        this.id = id;
        this.name = name;
        this.password = password;
        this.age = age;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

3.添加一个UserController类,类中内容如下:

package com.mvc.controller;

import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.mvc.po.User;
import com.mvc.service.UserService;

@Controller
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/export.do")
    public @ResponseBody String export(HttpServletResponse response){    
        response.setContentType("application/binary;charset=UTF-8");
        try{
            ServletOutputStream out=response.getOutputStream();
            String fileName=new String(("UserInfo "+ new SimpleDateFormat("yyyy-MM-dd").format(new Date())).getBytes(),"UTF-8");
            response.setHeader("Content-disposition", "attachment; filename=" + fileName + ".xls");
            String[] titles = { "用户编号", "用户姓名", "用户密码", "用户年龄" }; 
            userService.export(titles, out);
            return "success";
        } catch(Exception e){
            e.printStackTrace();
            return "导出信息失败";
        }
    }
}

4.添加一个接口类UserService和实现类UserServiceImpl,类中内容如下:

package com.mvc.service;

import javax.servlet.ServletOutputStream;
import com.mvc.po.User;

public interface UserService {
    public void export(String[] titles, ServletOutputStream out);
}
package com.mvc.service.impl;

import java.text.SimpleDateFormat;
import java.util.List;

import javax.servlet.ServletOutputStream;

import com.mvc.dao.UserDAO;
import com.mvc.po.User;
import com.mvc.service.UserService;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDAO userDAO;

    @Override
    public void export(String[] titles, ServletOutputStream out) {                
        try{
            // 第一步,创建一个workbook,对应一个Excel文件
            HSSFWorkbook workbook = new HSSFWorkbook();
            // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
            HSSFSheet hssfSheet = workbook.createSheet("sheet1");
            // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
            HSSFRow hssfRow = hssfSheet.createRow(0);
            // 第四步,创建单元格,并设置值表头 设置表头居中
            HSSFCellStyle hssfCellStyle = workbook.createCellStyle();
            //居中样式
            hssfCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

            HSSFCell hssfCell = null;
            for (int i = 0; i < titles.length; i++) {
                hssfCell = hssfRow.createCell(i);//列索引从0开始
                hssfCell.setCellValue(titles[i]);//列名1
                hssfCell.setCellStyle(hssfCellStyle);//列居中显示                
            }

            // 第五步,写入实体数据 
            List<User> users = userDAO.query();            

            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            if(users != null && !users.isEmpty()){
                for (int i = 0; i < users.size(); i++) {
                    hssfRow = hssfSheet.createRow(i+1);                
                    User user = users.get(i);

                    // 第六步,创建单元格,并设置值
                    int userid = 0;
                    if(user.getId() != 0){
                        userid = user.getId();
                    }
                    hssfRow.createCell(0).setCellValue(userid);
                    String username = "";
                    if(user.getName() != null){
                        username = user.getName();
                    }
                    hssfRow.createCell(1).setCellValue(username);
                    String password = "";
                    if(user.getPassword() != null){
                        password = user.getPassword();
                    }
                    hssfRow.createCell(2).setCellValue(password);
                    int age = 0;
                    if(user.getAge() != 0){
                        age = user.getAge();
                    }
                    hssfRow.createCell(3).setCellValue(age);
                }
            }

            // 第七步,将文件输出到客户端浏览器
            try {
                workbook.write(out);
                out.flush();
                out.close();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }catch(Exception e){
            e.printStackTrace();
            throw new Exception("导出信息失败!");
        }    
    }
}

5.添加一个接口类UserDAO和实现类UserDAOImpl,类中内容如下:

package com.mvc.dao;

import java.util.List;
import com.mvc.po.User;

public interface UserDAO {
    List<User> query();    
}
package com.mvc.dao.impl;

import java.util.List;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mvc.dao.UserDAO;
import com.mvc.po.User;

import org.springframework.stereotype.Repository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

@Repository
public class UserDAOImpl implements UserDAO {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    public List<User> query() {
        return this.jdbcTemplate.query("select * from student",
                new RowMapper<User>() {
                    public User mapRow(ResultSet rs, int arg1)
                            throws SQLException {
                        return new User(rs.getInt("sId"),
                                rs.getString("sName"), rs.getString("sPwd"), rs
                                        .getInt("sAge"));
                    }
                });
    }
}

 这样就完成了excel导出至客户端浏览器,当然有时候也会用到导出excel至服务器上。只需要对本文步骤4中的第七步文件输出方式进行修改,如下:
 

// 第七步,将文件存到指定位置
            try {
                FileOutputStream fileOutputStream = new FileOutputStream("C:/user.xls");//指定路径与名字和格式
                workbook.write(fileOutputStream);//将数据写出去
                fileOutputStream.close();//关闭输出流
            } catch (Exception e) {
                e.printStackTrace();
            }

然后去除controller类中的out参数设置就ok了。也可以看出其实两种方式只是最终保存方式不同,其他步骤是共通的。

转载自博客链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是利用POI导出Excel表格的步骤: 1.导入POI的jar包。 在Java工程中,需要将POI的jar包添加到工程中。 2.创建工作簿(Workbook)和工作表(Sheet)对象。 使用POI创建Excel表格的第一步是创建工作簿和工作表对象。 3.创建表头。 在Excel表格中,表头通常是第一行,我们需要将表头信息写入到该行中。 4.写入数据。 利用Java代码将需要导出的数据写入到Excel表格中。 5.设置单元格样式。 可以通过设置单元格样式来美化Excel表格。 6.保存Excel表格。 最后,将Excel表格保存到指定的位置。 下面是一个示例代码: ``` // 创建工作簿 Workbook wb = new HSSFWorkbook(); // 创建工作表 Sheet sheet = wb.createSheet("Sheet1"); // 创建表头 Row row = sheet.createRow(0); Cell cell = row.createCell(0); cell.setCellValue("姓名"); cell = row.createCell(1); cell.setCellValue("年龄"); // 写入数据 List<User> userList = getUserList(); for(int i = 0; i < userList.size(); i++){ User user = userList.get(i); row = sheet.createRow(i + 1); cell = row.createCell(0); cell.setCellValue(user.getName()); cell = row.createCell(1); cell.setCellValue(user.getAge()); } // 设置单元格样式 CellStyle style = wb.createCellStyle(); style.setAlignment(HorizontalAlignment.CENTER); cell.setCellStyle(style); // 保存Excel表格 FileOutputStream fos = new FileOutputStream("user.xlsx"); wb.write(fos); fos.close(); ``` 以上是一个简单的POI导出Excel表格的示例代码,你可以根据具体需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值