POI

package com.easylinkpos.common;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

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.CellRangeAddress;


/**
 * poi导出excel工具类
 * @author liumin
 *
 */
public class PoiUtil {
	// 创建新的Excel 工作簿 
    private HSSFWorkbook workbook; 
   
    // 在Excel工作簿中建一工作表,其名为缺省值, 也可以指定Sheet名称 
    private HSSFSheet sheet; 
   
    // 设置字体 
    private  HSSFFont font;
    
    public HSSFWorkbook getWorkbook() {
		return workbook;
	}

	public HSSFSheet getSheet() {
		return sheet;
	}


	public PoiUtil(){
    	 workbook = new HSSFWorkbook(); 
    	 sheet = workbook.createSheet();
    	 font=workbook.createFont();
    	 font.setColor(HSSFFont.COLOR_NORMAL); // 字体颜色 
    	 font.setFontName("宋体"); // 字体 
    }
    
    public PoiUtil(String SheetName){
    	workbook = new HSSFWorkbook(); 
   	    sheet = workbook.createSheet(SheetName); 
 
    }
	
	/**
	 * 创建单元格标题
	 * @param name
	 */
	public void createHSSFCellHead(int rowIndex,List<String> titles,HSSFCellStyle cellStyle){
		//创建新行(row),并将单元格(cell)放入其中. 行号从0开始计算. 
	    HSSFRow row = sheet.createRow(rowIndex); 
		for(int i=0;i<titles.size();i++){
			HSSFCell cell=row.createCell(i);
		    HSSFRichTextString hssfStringHead = new HSSFRichTextString(titles.get(i)); 
		    cell.setCellValue(hssfStringHead); // 设置单元格内容 
		    cell.setCellStyle(cellStyle); // 设置单元格样式 
		    cell.setCellType(HSSFCell.CELL_TYPE_STRING); // 指定单元格格式:数值、公式或字符串 
		    sheet.autoSizeColumn((short) i); // 调整列宽度 
		}
	}
	
	/**
	 * 创建Excel标题
	 * @param name
	 */
	public void createExcelTitle(String name,HSSFCellStyle cellStyle,CellRangeAddress cra){
	    HSSFRow row = sheet.createRow(0); 
	    HSSFCell cell=row.createCell(0);
	    HSSFRichTextString hssfStringHead = new HSSFRichTextString(name); 
	    cell.setCellValue(hssfStringHead); 
	    cell.setCellStyle(cellStyle); 
	    cell.setCellType(HSSFCell.CELL_TYPE_STRING); 
	    sheet.autoSizeColumn((short)0); 
	    sheet.addMergedRegion(cra);
	}
	
	/**
	 * 创建默认单元格样式
	 * @param workbook
	 * @return
	 */
	public  HSSFCellStyle createDefaultHSSFCellStyle(HSSFFont font){
	      HSSFCellStyle cellStyle=workbook.createCellStyle();
		  cellStyle.setFont(font); 
		  cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平布局:居中 
		  cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
		  cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
		  cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
		  cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
		  cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
		  //cellStyle.setWrapText(true);  //自动换行
		  //cellStyle.setFillForegroundColor(HSSFColor.SKY_BLUE.index); 设置单元格底色
		  return cellStyle;
	}
	
	/**
	 * 创建字体
	 * @param fontSize
	 * @param boldweight
	 * @return
	 */
	public HSSFFont createHSSFFont(int fontSize,short boldweight){
  	    font=workbook.createFont();
	   	font.setColor(HSSFFont.COLOR_NORMAL); // 字体颜色 
	    font.setFontName("宋体"); // 字体 
		font.setFontHeightInPoints(( short ) fontSize ); // 字体高度 
	    font.setBoldweight(boldweight); // 宽度 
		return font;
	}
	
	
	/**
	 * 创建列
	 * @param row
	 * @param columnIndex
	 * @return
	 */
	public HSSFCell createHSSFCell(HSSFRow row,int columnIndex,String text,HSSFCellStyle cellStyle){
	  	HSSFCell cell = row.createCell(columnIndex);
        HSSFRichTextString cellText = new HSSFRichTextString(text);
        cell.setCellValue(cellText);
        cell.setCellStyle(cellStyle);
		return cell;
	}
	
	/**
	 * 创建行
	 * @param rownum
	 * @return
	 */
	public HSSFRow createRow(int rownum){
		return sheet.createRow(rownum);
	}
	
	/**
	 * 打印excel
	 * @return
	 */
	public InputStream printExcel(){
		    ByteArrayOutputStream os = new ByteArrayOutputStream();
	 		try {
	 			workbook.write(os);
	 		} catch (IOException e) {
	 			e.printStackTrace();
	 		}
	 		byte[] content = os.toByteArray();
	 		InputStream is = new ByteArrayInputStream(content);
	 		return is;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值