java poi 设置公式_poi公式处理
設(shè)置單元格樣式
HSSFCellStyle類代表一種單元格樣式??梢酝ㄟ^這個(gè)類來設(shè)置單元格的邊框樣式、背景顏色、字體、水平和垂直對齊方式等等。
HSSFCellStyle titleStyle = workbook.createCellStyle();
titleStyle.setBorderBottom(HSSFCellStyle.BORDER_DOUBLE);
titleStyle.setBorderLeft((short)1);
titleStyle.setBorderRight((short)1);
titleStyle.setBorderTop(HSSFCellStyle.BORDER_DOUBLE);
titleStyle.setFillForegroundColor(HSSFColor.LIGHT_ORANGE.index);
titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
注意:如果我們定義了一種樣式,把它賦給一些單元格。然后基于新的需要,更改該樣式中的某個(gè)屬性,再賦給另一些單元格。那么之前單元格樣式的該屬性也會(huì)被同時(shí)更改。
比如我們定義了樣式,設(shè)置單元格背景色為紅色:
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFillForegroundColor(HSSFColor.RED.index);
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
然后把它賦給一個(gè)單元格:
HSSFCell cell1 = row.createCell((short)1);
cell1.setCellStyle(cellStyle);
然后更改樣式中的背景色屬性為藍(lán)色:
cellStyle.setFillForegroundColor(HSSFColor.BLUE.index);
然后賦給另一個(gè)單元格:
HSSFCell cell2 = row.createCell((short)2);
cell2.setCellStyle(cellStyle);
想當(dāng)然,我們預(yù)計(jì)在最終結(jié)果中cell1的背景色為紅色,cell2的背景色為藍(lán)色。但是結(jié)果是:兩個(gè)單元格的背景色都變成了藍(lán)色。
遇到這種情況,要預(yù)先定義兩種不同的單元格樣式。
當(dāng)一個(gè)EXCEL文件同時(shí)需要很多大同小異的單元格樣式時(shí),這樣一一定義很麻煩。POI HSSF提供了一個(gè)HSSFCellUtil類(在org.apache.poi.hssf.usermodel.contrib包),里面有幾個(gè)方法可以繞過HSSFCellStyle直接設(shè)定單元格的樣式,但這幾個(gè)方法會(huì)拋出NestableException異常,要處理這個(gè)異常,需要引用Apache的幾個(gè)Common包:
commons-beanutils.jar
commons-beanutils-bean-collections.jar
commons-beanutils-core.jar
commons-lang.jar
commons-logging-api.jar
合并單元格
HSSFSheet.addMergedRegion(new Region())方法可以合并單元格,Region()中的一個(gè)構(gòu)造函數(shù)含有四個(gè)參數(shù),分別代表起始行、起始列、結(jié)束行、結(jié)束列:
sheet.addMergedRegion(new Region(startRow,startCell,endRow,endCell)));
處理公式
HSSFCell.setCellFormula()方法用來在EXCEL單元格中寫入公式。
cell = row.createCell((short)(dataFlag));
cell.setCellType(HSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("SUM("A1:D1")");
cell.setCellStyle(nameStyle);
處理鏈接
在POI中往單元格中寫鏈接,是用HYPERLINK函數(shù)搞定的。
HYPERLINK函數(shù)包含兩個(gè)參數(shù),第一個(gè)參數(shù)是指向的URL地址,第二個(gè)參數(shù)是顯示字串。
cell = row.createCell((short)(dataFlag));
cell.setCellType(HSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("HYPERLINK('鏈接地址http...')");???cell.setCellStyle(linkStyle);
為了使鏈接效果更好,我們可以給鏈接所在單元格定義一種樣式,使鏈接顯示為有下劃線的藍(lán)色字串:
HSSFCellStyle linkStyle = workbook.createCellStyle();
linkStyle.setBorderBottom((short)1);
linkStyle.setBorderLeft((short)1);
linkStyle.setBorderRight((short)1);
linkStyle.setBorderTop((short)1);
linkStyle.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
linkStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
HSSFFont font = workbook.createFont();
font.setFontName(HSSFFont.FONT_ARIAL);
font.setUnderline((byte)1);??font.setColor(HSSFColor.BLUE.index);
linkStyle.setFont(font);
中文處理:
要在通過POI生成的EXCEL中正常顯示中文,需要為單元格設(shè)置編碼:
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("部門");
總結(jié)
以上是生活随笔為你收集整理的java poi 设置公式_poi公式处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java内部类为什么会持有外部类的引用_
- 下一篇: java日志模块_Java源码初探_lo