POI-Excel使用

本文章只是簡(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);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末剔氏,一起剝皮案震驚了整個(gè)濱河市塑猖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谈跛,老刑警劉巖羊苟,帶你破解...
    沈念sama閱讀 223,207評(píng)論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異感憾,居然都是意外死亡蜡励,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門(mén)阻桅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)凉倚,“玉大人,你說(shuō)我怎么就攤上這事嫂沉』” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 170,031評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵趟章,是天一觀的道長(zhǎng)瓦胎。 經(jīng)常有香客問(wèn)我,道長(zhǎng)尤揣,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,334評(píng)論 1 300
  • 正文 為了忘掉前任柬祠,我火速辦了婚禮北戏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘漫蛔。我一直安慰自己嗜愈,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,322評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布莽龟。 她就那樣靜靜地躺著蠕嫁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪毯盈。 梳的紋絲不亂的頭發(fā)上剃毒,一...
    開(kāi)封第一講書(shū)人閱讀 52,895評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼赘阀。 笑死益缠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的基公。 我是一名探鬼主播幅慌,決...
    沈念sama閱讀 41,300評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼轰豆!你這毒婦竟也來(lái)了胰伍?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,264評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤酸休,失蹤者是張志新(化名)和其女友劉穎骂租,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體雨席,經(jīng)...
    沈念sama閱讀 46,784評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡菩咨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,870評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了陡厘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抽米。...
    茶點(diǎn)故事閱讀 40,989評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖糙置,靈堂內(nèi)的尸體忽然破棺而出云茸,到底是詐尸還是另有隱情,我是刑警寧澤谤饭,帶...
    沈念sama閱讀 36,649評(píng)論 5 351
  • 正文 年R本政府宣布标捺,位于F島的核電站,受9級(jí)特大地震影響揉抵,放射性物質(zhì)發(fā)生泄漏亡容。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,331評(píng)論 3 336
  • 文/蒙蒙 一冤今、第九天 我趴在偏房一處隱蔽的房頂上張望闺兢。 院中可真熱鬧,春花似錦戏罢、人聲如沸屋谭。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,814評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)桐磁。三九已至,卻和暖如春讲岁,著一層夾襖步出監(jiān)牢的瞬間我擂,已是汗流浹背衬以。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,940評(píng)論 1 275
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扶踊,地道東北人泄鹏。 一個(gè)月前我還...
    沈念sama閱讀 49,452評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像秧耗,于是被迫代替她去往敵國(guó)和親备籽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,995評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 使用首先需要了解他的工作原理 1.POI結(jié)構(gòu)與常用類 (1)創(chuàng)建Workbook和Sheet (2)創(chuàng)建單元格 (...
    長(zhǎng)城ol閱讀 8,446評(píng)論 2 25
  • 轉(zhuǎn)自鏈接 目錄 1.認(rèn)識(shí)NPOI 2.使用NPOI生成xls文件 2.1創(chuàng)建基本內(nèi)容 2.1.1創(chuàng)建Workboo...
    腿毛褲閱讀 10,601評(píng)論 1 3
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,871評(píng)論 6 342
  • POI操作Excel Excel簡(jiǎn)介一個(gè)excel文件就是一個(gè)工作簿workbook分井,一個(gè)工作簿中可以創(chuàng)建多張工作...
    灰氣球閱讀 4,724評(píng)論 2 48
  • 實(shí)習(xí)第二周 No.2 項(xiàng)目功能里要求能夠?qū)⒄故镜膱?bào)表導(dǎo)出excel车猬,因?yàn)閳?bào)表的數(shù)據(jù)都是動(dòng)態(tài)從list傳進(jìn)來(lái)的,所...
    蘇筱筑閱讀 2,371評(píng)論 2 7