POI-Excel使用

本文章只是简单介绍Excel的使用,更多POI的使用,请移步POI的官网地址了解或百度其他文章。
jar包也可到MVNRepository进行下载

1.创建

//创建Excel
Workbook wb = new HSSFWorkbook();

//创建sheet
Sheet sheet = wb.createSheet("sheet"); 

//创建行Row
Row row = sheet.createRow(rowNum++);

//创建单元格Cell
Cell titleCell = titleRow.createCell(0);

//创建单元格样式
HSSFCellStyle cellStyle = wb.createCellStyle(); 

//创建字体Font
HSSFFont font = wb.createFont(); 

//创建单元格合并
CellRangeAddress cellRangeAddress = 
        new CellRangeAddress(firstRow, lastRow, firstCol, lastCol);

2.使用例子

2.1 遍历

for (Sheet sheet : wb ) {
    for (Row row : sheet) {
        for (Cell cell : row) {
             // Do something here
        }
    }
}

2.2 行高列宽

setColumnWidth参数的单位是1/256个字符宽度
setHeight参数的单位是1/20个点

//设置行高
row.setHeight((short) (10*20));
//设置列宽
sheet.setColumnWidth(i, 2*256);

2.3 单元格-对齐

CellStyle style=wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
style.setWrapText(true);//自动换行
style.setIndention((short)5);//缩进
style.setRotation((short)60);//文本旋转,这里的取值是从-90到90,而不是0-180度。
cell.setCellStyle(style);

//单元格合并
CellRangeAddress region=new CellRangeAddress(0, 0, 0, 5);//行头行尾列头列尾
sheet.addMergedRegion(region);

2.4 单元格-字体

CellStyle style = wb.createCellStyle();
Font font = wb.createFont();
font.setFontName("华文行楷");//设置字体名称
font.setFontHeightInPoints((short)28);//设置字号
font.setColor(HSSFColor.RED.index);//设置字体颜色
font.setUnderline(FontFormatting.U_SINGLE);//设置下划线
font.setTypeOffset(FontFormatting.SS_SUPER);//设置上标下标
font.setStrikeout(true);//设置删除线
style.setFont(font);
cell.setCellStyle(style);

2.5 单元格-边框

CellStyle style=wb.createCellStyle();
style.setBorderTop(HSSFCellStyle.BORDER_DOTTED);//上边框
style.setBorderBottom(HSSFCellStyle.BORDER_THICK);//下边框
style.setBorderLeft(HSSFCellStyle.BORDER_DOUBLE);//左边框
style.setBorderRight(HSSFCellStyle.BORDER_SLANTED_DASH_DOT);//右边框
style.setTopBorderColor(HSSFColor.RED.index);//上边框颜色
style.setBottomBorderColor(HSSFColor.BLUE.index);//下边框颜色
style.setLeftBorderColor(HSSFColor.GREEN.index);//左边框颜色
style.setRightBorderColor(HSSFColor.PINK.index);//右边框颜色
cell.setCellStyle(style);

2.6 单元格-背景填充

CellStyle style = wb.createCellStyle();
style.setFillForegroundColor(HSSFColor.GREEN.index);//设置图案颜色
style.setFillBackgroundColor(HSSFColor.RED.index);//设置图案背景色
style.setFillPattern(HSSFCellStyle.SQUARES);//设置图案样式
cell.setCellStyle(style);

2.7 打印设置

PrintSetup ps = sheet.getPrintSetup();
sheet.setAutobreaks(true);
ps.setLandscape(false); //打印方向,true:横向,false:纵向
ps.setPaperSize(HSSFPrintSetup.A4_PAPERSIZE); //纸张
ps.setFitHeight((short) 0);//设置高度为自动分页
ps.setFitWidth((short) 1);//设置宽度为一页

2.8 单元格-数字格式

HSSFSheet sheet = workbook.createSheet("Test");// 创建工作表(Sheet)
HSSFRow row=sheet.createRow(0);
//设置日期格式--使用Excel内嵌的格式
HSSFCell cell=row.createCell(0);
cell.setCellValue(new Date());
HSSFCellStyle style=workbook.createCellStyle();
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
cell.setCellStyle(style);
//设置保留2位小数--使用Excel内嵌的格式
cell=row.createCell(1);
cell.setCellValue(12.3456789);
style=workbook.createCellStyle();
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));
cell.setCellStyle(style);
//设置货币格式--使用自定义的格式
cell=row.createCell(2);
cell.setCellValue(12345.6789);
style=workbook.createCellStyle();
style.setDataFormat(workbook.createDataFormat().getFormat("¥#,##0"));
cell.setCellStyle(style);
//设置百分比格式--使用自定义的格式
cell=row.createCell(3);
cell.setCellValue(0.123456789);
style=workbook.createCellStyle();
style.setDataFormat(workbook.createDataFormat().getFormat("0.00%"));
cell.setCellStyle(style);
//设置中文大写格式--使用自定义的格式
cell=row.createCell(4);
cell.setCellValue(12345);
style=workbook.createCellStyle();
style.setDataFormat(workbook.createDataFormat().getFormat("[DbNum2][$-804]0"));
cell.setCellStyle(style);
//设置科学计数法格式--使用自定义的格式
cell=row.createCell(5);
cell.setCellValue(12345);
style=workbook.createCellStyle();
style.setDataFormat(workbook.createDataFormat().getFormat("0.00E+00"));
cell.setCellStyle(style);

HSSFDataFormat.getFormat和HSSFDataFormat.getBuiltinFormat的区别: 当使用Excel内嵌的(或者说预定义)的格式时,直接用HSSFDataFormat.getBuiltinFormat静态方法即可。当使用自己定义的格式时,必须先调用HSSFWorkbook.createDataFormat(),因为这时在底层会先找有没有匹配的内嵌FormatRecord,如果没有就会新建一个FormatRecord,所以必须先调用这个方法,然后你就可以用获得的HSSFDataFormat实例的getFormat方法了,当然相对而言这种方式比较麻烦,所以内嵌格式还是用HSSFDataFormat.getBuiltinFormat静态方法更加直接一些。

3.输出

wb.write(outPutStream);

你可能感兴趣的:(POI-Excel使用)