package com.it.poi;


import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

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.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.hssf.util.Region;
  
@SuppressWarnings("deprecation")
public class ExportExcel {  
  
    private HSSFWorkbook wb = null;  
  
    private HSSFSheet sheet = null;  
  
    /** 
     * @param wb 
     * @param sheet 
     */  
    public ExportExcel(HSSFWorkbook wb, HSSFSheet sheet) {  
        super();  
        this.wb = wb;  
        this.sheet = sheet;  
    }  
  
    /** 
     * @return the sheet 
     */  
    public HSSFSheet getSheet() {  
        return sheet;  
    }  
  
    /** 
     * @param sheet 
     *            the sheet to set 
     */  
    public void setSheet(HSSFSheet sheet) {  
        this.sheet = sheet;  
    }  
  
    /** 
     * @return the wb 
     */  
    public HSSFWorkbook getWb() {  
        return wb;  
    }  
  
    /** 
     * @param wb 
     *            the wb to set 
     */  
    public void setWb(HSSFWorkbook wb) {  
        this.wb = wb;  
    }  
  
    /** 
     * 创建通用EXCEL头部 
     *  
     * @param headString 
     *            头部显示的字符 
     * @param colSum 
     *            该报表的列数 
     */  
    public void createNormalHead(String headString, int colSum) {  
  
        HSSFRow row = sheet.createRow(0);  
  
        // 设置第一行  
        HSSFCell cell = row.createCell(0);  
        row.setHeight((short) 400);  
  
        // 定义单元格为字符串类型  
        cell.setCellType(HSSFCell.ENCODING_UTF_16);  
        cell.setCellValue(new HSSFRichTextString(headString));  
  
        // 指定合并区域  
        sheet.addMergedRegion(new Region(0, (short) 0, 0, (short) colSum));  
  
        HSSFCellStyle cellStyle = wb.createCellStyle();  
  
        cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐  
        cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 指定单元格垂直居中对齐  
        cellStyle.setWrapText(true);// 指定单元格自动换行  
  
        // 设置单元格字体  
        HSSFFont font = wb.createFont();  
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);  
        font.setFontName("宋体");  
        font.setFontHeight((short) 300);  
        cellStyle.setFont(font);  
  
        cell.setCellStyle(cellStyle);  
    }  
  
    /** 
     * 创建通用报表第二行 
     *  
     * @param params 
     *            统计条件数组 
     * @param colSum 
     *            需要合并到的列索引 
     */  
    public void createNormalTwoRow(String[] params, int colSum) {  
        HSSFRow row1 = sheet.createRow(1);  
        row1.setHeight((short) 300);  
  
        HSSFCell cell2 = row1.createCell(0);  
  
        cell2.setCellType(HSSFCell.ENCODING_UTF_16);  
        cell2.setCellValue(new HSSFRichTextString("统计时间:" + params[0] + "至"  
                + params[1]));  
  
        // 指定合并区域  ALIGN_CENTER
        sheet.addMergedRegion(new Region(1, (short) 0, 1, (short) colSum));  
  
        HSSFCellStyle cellStyle = wb.createCellStyle();  
        cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐  
        cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 指定单元格垂直居中对齐  
        cellStyle.setWrapText(true);// 指定单元格自动换行  
  
        // 设置单元格字体  
        HSSFFont font = wb.createFont();  
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);  
        font.setFontName("宋体");  
        font.setFontHeight((short) 250);  
        cellStyle.setFont(font);  
  
        cell2.setCellStyle(cellStyle);  
  
    }  
  
    /** 
     * 设置报表标题 
     *  
     * @param columHeader 
     *            标题字符串数组 
     */  
    public void createColumHeader(String[] columHeader) {  
  
        // 设置列头  
        HSSFRow row2 = sheet.createRow(2);  
  
        // 指定行高  
        row2.setHeight((short) 600);  
  
        HSSFCellStyle cellStyle = wb.createCellStyle();  
        cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐  
        cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 指定单元格垂直居中对齐  
        cellStyle.setWrapText(true);// 指定单元格自动换行  
  
        // 单元格字体  
        HSSFFont font = wb.createFont();  
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);  
        font.setFontName("宋体");  
        font.setFontHeight((short) 250);  
        cellStyle.setFont(font);  
  
        /* 
         * cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单无格的边框为粗体 
         * cellStyle.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色. 
         * cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); 
         * cellStyle.setLeftBorderColor(HSSFColor.BLACK.index); 
         * cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); 
         * cellStyle.setRightBorderColor(HSSFColor.BLACK.index); 
         * cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); 
         * cellStyle.setTopBorderColor(HSSFColor.BLACK.index); 
         */  
  
        // 设置单元格背景色  
        cellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);  
        cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);  
  
        HSSFCell cell3 = null;  
  
        for (int i = 0; i < columHeader.length; i++) {  
            cell3 = row2.createCell(i);  
            cell3.setCellType(HSSFCell.ENCODING_UTF_16);  
            cell3.setCellStyle(cellStyle);  
            cell3.setCellValue(new HSSFRichTextString(columHeader[i]));  
        }  
  
    }  
  
    /** 
     * 创建内容单元格 
     *  
     * @param wb 
     *            HSSFWorkbook 
     * @param row 
     *            HSSFRow 
     * @param col 
     *            short型的列索引 
     * @param align 
     *            对齐方式 
     * @param val 
     *            列值 
     */  
    public void cteateCell(HSSFWorkbook wb, HSSFRow row, int col, short align,  
            String val) {  
        HSSFCell cell = row.createCell(col);  
        cell.setCellType(HSSFCell.ENCODING_UTF_16);  
        cell.setCellValue(new HSSFRichTextString(val));  
        HSSFCellStyle cellstyle = wb.createCellStyle();  
        cellstyle.setAlignment(align);  
        cell.setCellStyle(cellstyle);  
    }  
  
    /** 
     * 创建合计行 
     *  
     * @param colSum 
     *            需要合并到的列索引 
     * @param cellValue 
     */  
    public void createLastSumRow(int colSum, String[] cellValue) {  
  
        HSSFCellStyle cellStyle = wb.createCellStyle();  
        cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐  
        cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 指定单元格垂直居中对齐  
        cellStyle.setWrapText(true);// 指定单元格自动换行  
  
        // 单元格字体  
        HSSFFont font = wb.createFont();  
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);  
        font.setFontName("宋体");  
        font.setFontHeight((short) 250);  
        cellStyle.setFont(font);  
  
        HSSFRow lastRow = sheet.createRow((short) (sheet.getLastRowNum() + 1));  
        HSSFCell sumCell = lastRow.createCell(0);  
  
        sumCell.setCellValue(new HSSFRichTextString("合计"));  
        sumCell.setCellStyle(cellStyle);  
        sheet.addMergedRegion(new Region(sheet.getLastRowNum(), (short) 0,  
                sheet.getLastRowNum(), (short) colSum));// 指定合并区域  
  
        for (int i = 2; i < (cellValue.length + 2); i++) {  
            sumCell = lastRow.createCell(i);  
            sumCell.setCellStyle(cellStyle);  
            sumCell.setCellValue(new HSSFRichTextString(cellValue[i - 2]));  
  
        }  
  
    }  
  
    /** 
     * 输入EXCEL文件 
     *  
     * @param fileName 
     *            文件名 
     */  
    public void outputExcel(String fileName) {  
        FileOutputStream fos = null;  
        try {  
            fos = new FileOutputStream(new File(fileName));  
            wb.write(fos);  
            fos.close();  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  
}  
最近下载更多
1358849392  LV21 2023年11月21日
745075779  LV5 2022年2月8日
Bai_yk  LV17 2021年11月17日
zhh1355  LV14 2021年5月15日
一字清华  LV8 2021年3月6日
A_xiaobao  LV9 2020年9月5日
123456nty  LV37 2020年8月18日
simple丶余心  LV21 2020年7月1日
luesjim  LV11 2020年4月21日
天气预报  LV11 2020年4月1日
最近浏览更多
1358849392  LV21 2023年11月21日
weijianguo  LV7 2023年5月21日
8战魂5无双8  LV43 2022年9月13日
最代码灬丿正牌  LV16 2022年9月4日
745075779  LV5 2022年2月8日
地方撒地方的  LV2 2021年12月18日
2607825144qq  LV3 2021年12月8日
释辰 2021年10月29日
暂无贡献等级
无理 2021年9月9日
暂无贡献等级
落雨适合睡觉 2021年8月10日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友