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;
}
}
POI
最新推荐文章于 2020-08-27 17:14:37 发布