POI导出工具类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POI导出工具类相关的知识,希望对你有一定的参考价值。

import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class ExportUtils {

    /**
     * 导出
     * @param data 数据
     * @param columnTitleList 标题名称
     * @param columnCodeList 列参数
     * @param fileName 文件名称
     * @param response
     */
    public static void exportData(List<Map<String, Object>> data, String[] columnTitleList, String[] columnCodeList,
            String fileName, HttpServletResponse response) {
        HSSFWorkbook workbook = new HSSFWorkbook(); //定义一个新的工作簿
        HSSFSheet sheet = workbook.createSheet();  // 创建第一个Sheet页
        HSSFRow row = sheet.createRow(0);
        
        // 创建标题样式 
        HSSFCellStyle headerStyle = (HSSFCellStyle) workbook .createCellStyle();// 创建标题样式  
        headerStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);    //设置垂直居中  
        headerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);   //设置水平居中  
        HSSFFont headerFont = (HSSFFont) workbook.createFont(); //创建字体样式  
        headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 字体加粗  
        headerFont.setFontName("Times New Roman");  //设置字体类型  
        headerFont.setFontHeightInPoints((short) 14);    //设置字体大小  
        headerStyle.setFont(headerFont);    //为标题样式设置字体样式
        headerStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 下边框  
        headerStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);// 左边框  
        headerStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);// 上边框  
        headerStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);// 右边框  
        
        //正文样式
        HSSFCellStyle cell_Style = (HSSFCellStyle) workbook .createCellStyle();// 设置字体样式  
        cell_Style.setAlignment(HSSFCellStyle.ALIGN_CENTER);  
        cell_Style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直对齐居中  
        cell_Style.setWrapText(true); // 设置为自动换行  
        HSSFFont cell_Font = (HSSFFont) workbook.createFont();  
        cell_Font.setFontName("宋体");  
        cell_Font.setFontHeightInPoints((short) 12);  
        cell_Style.setFont(cell_Font);  
        cell_Style.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 下边框  
        cell_Style.setBorderLeft(HSSFCellStyle.BORDER_THIN);// 左边框  
        cell_Style.setBorderTop(HSSFCellStyle.BORDER_THIN);// 上边框  
        cell_Style.setBorderRight(HSSFCellStyle.BORDER_THIN);// 右边框  
        
        // 设置标题
        for (int i = 0; i < columnTitleList.length; i++) {
            HSSFCell cell = row.createCell(i);
            cell.setCellStyle(headerStyle);
            cell.setCellValue(columnTitleList[i]);
            sheet.setColumnWidth(i, 256 * 20);
            row.setHeight((short) (256*2));
        }
        
        int n = 0;
        try {
            for (Map<String, Object> map : data) {
                row = sheet.createRow(++n);
                for (int i = 0; i < columnCodeList.length; i++) {
                    HSSFCell cell = row.createCell(i);
                    cell.setCellStyle(cell_Style);
                    if (map.get(columnCodeList[i]) != null) {
                        cell.setCellValue(map.get(columnCodeList[i]).toString());
                    } else {
                        cell.setCellValue("");
                    }
                }
            }
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        }
        OutputStream os = null;
        try {
            response.reset();
            response.setHeader("Content-Type", "application/vnd.ms-excel; charset=utf-8");
            response.setHeader("Content-Disposition",
                    "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xls");
            os = response.getOutputStream();
            workbook.write(os);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (os != null) {
                    os.flush();
                    os.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}


以上是关于POI导出工具类的主要内容,如果未能解决你的问题,请参考以下文章

POI导出工具类

原创POI操作Excel导入导出工具类ExcelUtil

使用POI导出Word(含表格)的实现方式及操作Word的工具类

使用POI做的一个生成Excel的工具类。包含了导出Excel和解析Excel方法

工具类Excel导出那些事儿

工具类Excel导出那些事儿