Excel导出共通

来源:互联网 发布:php soap扩展 编辑:程序博客网 时间:2024/06/05 15:34

import java.io.OutputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
* 导出Excel共通
* @author Lee
*/
public class ExportExcelUtil {

/** Excel表格类型(97-2003版本) */public static final String ContentType03 = "application/vnd.ms-excel";/** Excel表格类型(07版本以上) */public static final String ContentType07 = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8";/** excel数据的抬头栏,即名称栏 */private String[] fieldName = null;/** excel导出的实际数据 */private String[][] fieldData = null;/** Excel文件对象 */private Workbook workBook = null;/** 工作表名 */private String sheetName = null;/** * 有参构造器,限定了使用此类时,必须首先构建好两个list参数,并将所需数据放入上述两个list。 *  * @param fieldName * @param fieldData *            : 数据集合,fieldData这个可以使用泛型约束List<List<Object>> */public ExportExcelUtil(String[] fieldName, String[][] fieldData,        String sheetName) {    this.fieldName = fieldName;    this.fieldData = fieldData;    this.sheetName = sheetName;}/** * 生成Excel表格(97-2003版本) *  * @return HSSFWorkbook */public Workbook createHSSWorkbook() {    workBook = new HSSFWorkbook();// 创建一个工作簿    CellStyle headStyle = getHeadStyle(workBook);// 表头样式    CellStyle bodyStyle = getBodyStyle(workBook);// 表体样式    Sheet sheet = workBook.createSheet(sheetName);// 创建工作表    Row headRow = sheet.createRow(0); // 创建第一栏,抬头栏    for (int i = 0; i < fieldName.length; i++) {        Cell cell = headRow.createCell(0);// 创建抬头栏单元格        cell.setCellType(Cell.CELL_TYPE_STRING);// 设置单元格类型为String //设置单元格格式        cell.setCellStyle(headStyle);// 设置表头单元格样式        // 将数据填入单元格        if (StringUtil.isNotBlank(fieldName[i])) {            cell.setCellValue(fieldName[i]);        } else {            cell.setCellValue("-");        }    }    // 创建数据栏单元格并填入数据    for (int j = 0; j < fieldData.length; j++) {// 遍历        String[] childArray = fieldData[j];        Row bodyRow = sheet.createRow(j + 1);// 创建数据行        Cell cell = null;        for (int n = 0; n < childArray.length; n++) {            cell = bodyRow.createCell(n);            cell.setCellType(Cell.CELL_TYPE_STRING);// 设置单元格类型为String                                                   cell.setCellStyle(bodyStyle);// 设置表体单元格样式            if (StringUtil.isNotBlank(childArray[n])) {                cell.setCellValue(childArray[n]);            } else {                cell.setCellValue("");            }        }    }    return workBook;}/** * 生成Excel表格(07版本以上) *  * @return XSSFWorkbook */public Workbook createXSSWorkbook() {    workBook = new XSSFWorkbook();// 创建一个工作簿    CellStyle headStyle = getHeadStyle(workBook);// 表头样式    CellStyle bodyStyle = getBodyStyle(workBook);// 表体样式    Sheet sheet = workBook.createSheet(sheetName);// 创建工作表    Row headRow = sheet.createRow(0); // 创建第一栏,抬头栏    for (int i = 0; i < fieldName.length; i++) {        Cell cell = headRow.createCell(0);// 创建抬头栏单元格        cell.setCellType(Cell.CELL_TYPE_STRING);// 设置单元格类型为String //设置单元格格式        cell.setCellStyle(headStyle);// 设置表头单元格样式        // 将数据填入单元格        if (StringUtil.isNotBlank(fieldName[i])) {            cell.setCellValue(fieldName[i]);        } else {            cell.setCellValue("-");        }    }    // 创建数据栏单元格并填入数据    for (int j = 0; j < fieldData.length; j++) {// 遍历        String[] childArray = fieldData[j];        Row bodyRow = sheet.createRow(j + 1);// 创建数据行        Cell cell = null;        for (int n = 0; n < childArray.length; n++) {            cell = bodyRow.createCell(n);            cell.setCellType(Cell.CELL_TYPE_STRING);// 设置单元格类型为String                                                    // //设置单元格格式            cell.setCellStyle(bodyStyle);// 设置表体单元格样式            if (StringUtil.isNotBlank(childArray[n])) {                cell.setCellValue(childArray[n]);            } else {                cell.setCellValue("");            }        }    }    return workBook;}/** * 设置表头的单元格样式 *  * @return */private CellStyle getHeadStyle(Workbook wb) {    // 创建单元格样式    CellStyle cellStyle = wb.createCellStyle();    // 设置单元格的背景颜色为淡蓝色    cellStyle.setFillForegroundColor(HSSFColor.PALE_BLUE.index);    cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);    // 设置单元格居中对齐    cellStyle.setAlignment(CellStyle.ALIGN_CENTER);    // 设置单元格垂直居中对齐    cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);    // 创建单元格内容显示不下时自动换行    cellStyle.setWrapText(true);    // 设置单元格字体样式    Font font = wb.createFont();    // 设置字体加粗    font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);    font.setFontName("宋体"); // TODO : 此处有疑问,会不会引发异常    font.setFontHeight((short) 200);    cellStyle.setFont(font);    // 设置单元格边框为细线条    cellStyle.setBorderLeft(CellStyle.BORDER_THIN);    cellStyle.setBorderBottom(CellStyle.BORDER_THIN);    cellStyle.setBorderRight(CellStyle.BORDER_THIN);    cellStyle.setBorderTop(CellStyle.BORDER_THIN);    return cellStyle;}/** * 设置表体的单元格样式 *  * @return */private CellStyle getBodyStyle(Workbook wb) {    // 创建单元格样式    CellStyle cellStyle = wb.createCellStyle();    // 设置单元格居中对齐    cellStyle.setAlignment(CellStyle.ALIGN_CENTER);    // 设置单元格垂直居中对齐    cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);    // 创建单元格内容显示不下时自动换行    cellStyle.setWrapText(true);    // 设置单元格字体样式    Font font = wb.createFont();    // 设置字体加粗    font.setBoldweight(Font.BOLDWEIGHT_BOLD);    font.setFontName("宋体"); // TODO : 此处有疑问,会不会引发异常    font.setFontHeight((short) 200);    cellStyle.setFont(font);    // 设置单元格边框为细线条    cellStyle.setBorderLeft(CellStyle.BORDER_THIN);    cellStyle.setBorderBottom(CellStyle.BORDER_THIN);    cellStyle.setBorderRight(CellStyle.BORDER_THIN);    cellStyle.setBorderTop(CellStyle.BORDER_THIN);    return cellStyle;}/** * 将信息写入输出流 *  * @param outputStream * @throws Exception */public void exportExcel(OutputStream outputStream) throws Exception {    // 默认生成07以上版本的Excel    workBook = createXSSWorkbook();    workBook.write(outputStream);    try {        outputStream.close();    } catch (IOException e) {        e.printStackTrace();    }}

}

0 0
原创粉丝点击