Springboot项目excel表格导出功能

Springboot项目excel表格导出功能

1.引入依赖

     3.17
	 
    		org.apache.poi
            poi
            ${poi.version}
	 

2.导出excel工具类

package org.jingmen.common.utils;

import org.apache.poi.hssf.usermodel.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.List;
/**
 * @Author:dl
 * @Date :2019/10/29
 */
public class ExcelUtil {
    /**
     * Excel表格导出
     * @param response HttpServletResponse对象
     * @param excelData Excel表格的数据,封装为List>
     * @param sheetName sheet的名字
     * @param fileName 导出Excel的文件名
     * @param columnWidth Excel表格的宽度,建议为15
     * @throws IOException 抛IO异常
     */
    public static void exportExcel(HttpServletResponse response,
                                   List> excelData,
                                   String sheetName,
                                   String fileName,
                                   int columnWidth) throws IOException {
        //声明一个工作簿
        HSSFWorkbook workbook = new HSSFWorkbook();
        //生成一个表格,设置表格名称
        HSSFSheet sheet = workbook.createSheet(sheetName);
        //设置表格列宽度
        sheet.setDefaultColumnWidth(columnWidth);
        //写入List>中的数据
        int rowIndex = 0;
        for(List data : excelData){
            //创建一个row行,然后自增1
            HSSFRow row = sheet.createRow(rowIndex++);
            //遍历添加本行数据
            for (int i = 0; i < data.size(); i++) {
                //创建一个单元格
                HSSFCell cell = row.createCell(i);
                //创建一个内容对象
                HSSFRichTextString text = new HSSFRichTextString(data.get(i));
                //将内容对象的文字内容写入到单元格中
                cell.setCellValue(text);
            }
        }
        //设置中文文件名与后缀
        String encodedFileName = URLEncoder.encode(fileName + ".xlsx","utf-8").replaceAll("\\+", "%20");
        // 清除buffer缓存
        response.reset();
        //设置导出Excel的名称
        response.setHeader("Content-disposition", "attachment;filename="+encodedFileName+"");
        //准备将Excel的输出流通过response输出到页面下载
        //八进制输出流
        response.setContentType("application/vnd.ms-excel;charset=UTF-8");
        response.setHeader("Pragma", "no-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 0);
        //刷新缓冲
        response.flushBuffer();
        //workbook将Excel写入到response的输出流中,供页面下载该Excel文件
        workbook.write(response.getOutputStream());
        //关闭workbook
        workbook.close();
    }
}

3.Controller层调用

/**
	 * 导出成功对接资金excel
	 * @param response
	 * @return
	 */
	@RequestMapping("/excelDownloadDockMoney")
	public void excelDownloadDockMoney(HttpServletResponse response,HttpServletRequest request){
		List studentList= studentService.getStudent();
		List> excelData = new ArrayList<>();
		List headList = new ArrayList<>();
		headList.add("姓名");
		headList.add("年龄");
		excelData.add(headList);
		if(monthAndDigitalList != null){
			for (student student: studentList) {
				List list = new ArrayList();
				list.add(student.getName());
				list.add(student.getAge());
				excelData.add(list);
			}
		}
		String sheetName = "学生表";
		String fileName = "学生信息统计表";
		try {
			ExcelUtil.exportExcel(response, excelData, sheetName, fileName, 15);
		} catch (IOException e) {
			logger.info("导出失败");
		}
	}

你可能感兴趣的:(springboot)