本文章只是簡(jiǎn)單介紹Excel的使用户誓,更多POI的使用袁串,請(qǐng)移步POI的官網(wǎng)地址了解或百度其他文章传惠。
jar包也可到MVNRepository進(jìn)行下載
1.創(chuàng)建
//創(chuàng)建Excel
Workbook wb = new HSSFWorkbook();
//創(chuàng)建sheet
Sheet sheet = wb.createSheet("sheet");
//創(chuàng)建行Row
Row row = sheet.createRow(rowNum++);
//創(chuàng)建單元格Cell
Cell titleCell = titleRow.createCell(0);
//創(chuàng)建單元格樣式
HSSFCellStyle cellStyle = wb.createCellStyle();
//創(chuàng)建字體Font
HSSFFont font = wb.createFont();
//創(chuàng)建單元格合并
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參數(shù)的單位是1/256個(gè)字符寬度
setHeight參數(shù)的單位是1/20個(gè)點(diǎn)
//設(shè)置行高
row.setHeight((short) (10*20));
//設(shè)置列寬
sheet.setColumnWidth(i, 2*256);
2.3 單元格-對(duì)齊
CellStyle style=wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
style.setWrapText(true);//自動(dòng)換行
style.setIndention((short)5);//縮進(jìn)
style.setRotation((short)60);//文本旋轉(zhuǎn)记盒,這里的取值是從-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("華文行楷");//設(shè)置字體名稱
font.setFontHeightInPoints((short)28);//設(shè)置字號(hào)
font.setColor(HSSFColor.RED.index);//設(shè)置字體顏色
font.setUnderline(FontFormatting.U_SINGLE);//設(shè)置下劃線
font.setTypeOffset(FontFormatting.SS_SUPER);//設(shè)置上標(biāo)下標(biāo)
font.setStrikeout(true);//設(shè)置刪除線
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);//設(shè)置圖案顏色
style.setFillBackgroundColor(HSSFColor.RED.index);//設(shè)置圖案背景色
style.setFillPattern(HSSFCellStyle.SQUARES);//設(shè)置圖案樣式
cell.setCellStyle(style);
2.7 打印設(shè)置
PrintSetup ps = sheet.getPrintSetup();
sheet.setAutobreaks(true);
ps.setLandscape(false); //打印方向绑榴,true:橫向,false:縱向
ps.setPaperSize(HSSFPrintSetup.A4_PAPERSIZE); //紙張
ps.setFitHeight((short) 0);//設(shè)置高度為自動(dòng)分頁(yè)
ps.setFitWidth((short) 1);//設(shè)置寬度為一頁(yè)
2.8 單元格-數(shù)字格式
HSSFSheet sheet = workbook.createSheet("Test");// 創(chuàng)建工作表(Sheet)
HSSFRow row=sheet.createRow(0);
//設(shè)置日期格式--使用Excel內(nèi)嵌的格式
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);
//設(shè)置保留2位小數(shù)--使用Excel內(nèi)嵌的格式
cell=row.createCell(1);
cell.setCellValue(12.3456789);
style=workbook.createCellStyle();
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));
cell.setCellStyle(style);
//設(shè)置貨幣格式--使用自定義的格式
cell=row.createCell(2);
cell.setCellValue(12345.6789);
style=workbook.createCellStyle();
style.setDataFormat(workbook.createDataFormat().getFormat("¥#,##0"));
cell.setCellStyle(style);
//設(shè)置百分比格式--使用自定義的格式
cell=row.createCell(3);
cell.setCellValue(0.123456789);
style=workbook.createCellStyle();
style.setDataFormat(workbook.createDataFormat().getFormat("0.00%"));
cell.setCellStyle(style);
//設(shè)置中文大寫(xiě)格式--使用自定義的格式
cell=row.createCell(4);
cell.setCellValue(12345);
style=workbook.createCellStyle();
style.setDataFormat(workbook.createDataFormat().getFormat("[DbNum2][$-804]0"));
cell.setCellStyle(style);
//設(shè)置科學(xué)計(jì)數(shù)法格式--使用自定義的格式
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的區(qū)別: 當(dāng)使用Excel內(nèi)嵌的(或者說(shuō)預(yù)定義)的格式時(shí)盈魁,直接用HSSFDataFormat.getBuiltinFormat靜態(tài)方法即可翔怎。當(dāng)使用自己定義的格式時(shí),必須先調(diào)用HSSFWorkbook.createDataFormat(),因?yàn)檫@時(shí)在底層會(huì)先找有沒(méi)有匹配的內(nèi)嵌FormatRecord赤套,如果沒(méi)有就會(huì)新建一個(gè)FormatRecord飘痛,所以必須先調(diào)用這個(gè)方法,然后你就可以用獲得的HSSFDataFormat實(shí)例的getFormat方法了容握,當(dāng)然相對(duì)而言這種方式比較麻煩宣脉,所以內(nèi)嵌格式還是用HSSFDataFormat.getBuiltinFormat靜態(tài)方法更加直接一些。
3.輸出
wb.write(outPutStream);