java poi 设置公式_poi公式处理
設置單元格樣式
HSSFCellStyle類代表一種單元格樣式。可以通過這個類來設置單元格的邊框樣式、背景顏色、字體、水平和垂直對齊方式等等。
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);
注意:如果我們定義了一種樣式,把它賦給一些單元格。然后基于新的需要,更改該樣式中的某個屬性,再賦給另一些單元格。那么之前單元格樣式的該屬性也會被同時更改。
比如我們定義了樣式,設置單元格背景色為紅色:
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFillForegroundColor(HSSFColor.RED.index);
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
然后把它賦給一個單元格:
HSSFCell cell1 = row.createCell((short)1);
cell1.setCellStyle(cellStyle);
然后更改樣式中的背景色屬性為藍色:
cellStyle.setFillForegroundColor(HSSFColor.BLUE.index);
然后賦給另一個單元格:
HSSFCell cell2 = row.createCell((short)2);
cell2.setCellStyle(cellStyle);
想當然,我們預計在最終結果中cell1的背景色為紅色,cell2的背景色為藍色。但是結果是:兩個單元格的背景色都變成了藍色。
遇到這種情況,要預先定義兩種不同的單元格樣式。
當一個EXCEL文件同時需要很多大同小異的單元格樣式時,這樣一一定義很麻煩。POI HSSF提供了一個HSSFCellUtil類(在org.apache.poi.hssf.usermodel.contrib包),里面有幾個方法可以繞過HSSFCellStyle直接設定單元格的樣式,但這幾個方法會拋出NestableException異常,要處理這個異常,需要引用Apache的幾個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()中的一個構造函數含有四個參數,分別代表起始行、起始列、結束行、結束列:
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函數搞定的。
HYPERLINK函數包含兩個參數,第一個參數是指向的URL地址,第二個參數是顯示字串。
cell = row.createCell((short)(dataFlag));
cell.setCellType(HSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("HYPERLINK('鏈接地址http...')");???cell.setCellStyle(linkStyle);
為了使鏈接效果更好,我們可以給鏈接所在單元格定義一種樣式,使鏈接顯示為有下劃線的藍色字串:
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中正常顯示中文,需要為單元格設置編碼:
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("部門");
總結
以上是生活随笔為你收集整理的java poi 设置公式_poi公式处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java内部类为什么会持有外部类的引用_
- 下一篇: java日志模块_Java源码初探_lo