使用POI实现Excel的导出功能

1,Excel工具类

import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;

 /**
       * @author zhangna
       * @version Id: ExcelUtil.java, v 0.1 2018/8/15 下午11:09 zhangna Exp $$
       */

public class ExcelUtil {

      //标题行样式设置
     public CellStyle titleStyle(HSSFWorkbook workbook){
        HSSFCellStyle cellStyleTitle = workbook.createCellStyle();

        //居中
        cellStyleTitle.setAlignment(CellStyle.ALIGN_CENTER);
        //背景色
        cellStyleTitle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
        cellStyleTitle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        //字体
        HSSFFont titleFont = workbook.createFont();
        titleFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
        titleFont.setColor(HSSFColor.BLACK.index);
        titleFont.setFontName("宋体");
        titleFont.setFontHeight((short) 300);
        cellStyleTitle.setFont(titleFont);

        //边框
        cellStyleTitle.setBorderBottom(HSSFCellStyle.BORDER_DOUBLE);
        cellStyleTitle.setBorderLeft(HSSFCellStyle.BORDER_DOUBLE);
        cellStyleTitle.setBorderRight(HSSFCellStyle.BORDER_DOUBLE);
        cellStyleTitle.setBorderTop(HSSFCellStyle.BORDER_DOUBLE);

        return cellStyleTitle;
    }


    //内容行样式设置
    public CellStyle contentStyle(HSSFWorkbook workbook){
        HSSFCellStyle cellStyleContent = workbook.createCellStyle();

        //居中
        cellStyleContent.setAlignment(CellStyle.ALIGN_CENTER);
        //背景色
        cellStyleContent.setFillForegroundColor(HSSFColor.WHITE.index);
        cellStyleContent.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        //字体
        HSSFFont contentFont = workbook.createFont();
        contentFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
        contentFont.setColor(HSSFColor.BLACK.index);
        contentFont.setFontName("宋体");
        contentFont.setFontHeight((short) 300);
        cellStyleContent.setFont(contentFont);
        //边框
        cellStyleContent.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        cellStyleContent.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        cellStyleContent.setBorderRight(HSSFCellStyle.BORDER_THIN);
        cellStyleContent.setBorderTop(HSSFCellStyle.BORDER_THIN);
        /*cellStyleContent.setWrapText(true);*/

        return cellStyleContent;
    }
 }

2,pom.xml文件中引入POI依赖

 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.10-FINAL</version>
    </dependency>

3,java程序

public  void testExportData(){
  try{
     //从数据库中取出数据
     List<User> userList =  exprtData.queryUserData();

     ExcelUtil excelUtil = new ExcelUtil();
     //创建工作簿
     HSSFWorkbook workbook = new HSSFWorkbook();
     //设置标题样式
     CellStyle titleStyle = excelUtil.titleStyle(workbook);
     //设置内容的样式
     CellStyle contentStyle = excelUtil.contentStyle(workbook);
     //设置sheet的名称
     HSSFSheet sheet = workbook.createSheet("用户信息");
     //创建第一行
     HSSFRow row = sheet.createRow(0);
     //标题
     String[] title = {"用户id", "用户姓名", "性别", "年龄", "学历", "联系方式", "联系地址"};

     for (int i = 0; i < title.length; i++) {
         Cell cell = row.createCell(i);
         cell.setCellValue(title[i]);
         //设置列宽
         sheet.setColumnWidth(i, 4000);
         //设置样式
         cell.setCellStyle(titleStyle);
     }

     Cell cell = null;
      //循环遍历集合,将查出来的数据写入xcel中
     if (null != userList) {
         for (int i = 0; i < userList.size(); i++) {
             User user = userList.get(i);
             HSSFRow row1 = sheet.createRow(i + 1);
             String[] content = {user.getUserId(), user.getUserName(), user.getSex(),
                     user.getAge(), user.getEducation(), user.getPhone(),
                     user.getAddress()};
             for (int j = 0; j < content.length; j++) {
                 cell = row1.createCell(j);
                 cell.setCellValue(content[j]);
             }
             cell.setCellStyle(contentStyle);
         }
         OutputStream out = null;
         try {
           //将导出的excel保存至路径目录下
             String path = filePath;
             out = new FileOutputStream(path);
             workbook.write(out);
         } catch (IOException e) {
             log.error("导出用户信息失败");
         } finally {
             if (out != null) {
                 try {
                     out.close();
                 } catch (IOException e) {
                     log.error("关闭流异常,e={}", e);
                 }
             }
         }
     }

  }catch(Exception e){
     log.error("导出异常,e={}", e);
  }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值