POI匯出 Excel實現單元格的背景色填充

2021-09-01 15:18:10 字數 2252 閱讀 9108

隨著業務需求的擴充,簡簡單單的excel匯出已經不能滿足客戶的胃口了。而poi api這個傢伙裡面的坑有時候真的是讓你分分鐘沒有脾氣,所以打算記錄下來,分享一下poi的坑及其解決方法。

//1.獲取excel工作簿物件

hssfworkbook wb = new hssfworkbook();

//2.獲取sheet物件

hssfsheet sheet = wb.createsheet("sheet名");

//2.建立單元格樣式物件

hssfcellstyle cellstyle = wb.createcellstyle();

//3.新增常用樣式

cellstyle.setwraptext(true);//設定自動換行

cellstyle.setalignment(hssfcellstyle.align_center);//水平居中顯示

cellstyle.setverticalalignment(hssfcellstyle.vertical_center);//垂直居中

cellstyle.setborderbottom(hssfcellstyle.border_thin);//下邊框

cellstyle.setborderleft(hssfcellstyle.border_thin);//左邊框

cellstyle.setbordertop(hssfcellstyle.border_thin);//上邊框

cellstyle.setborderright(hssfcellstyle.border_thin);//右邊框

//4.設定單元格背景色

cellstyle.setfillpattern(hssfcellstyle.solid_foreground);//填充單元格

cellstyle.setfillforegroundcolor(hssfcolor.red.index);//設定單元格背景色

//5.建立單元格並為單元格新增樣式物件

/*5.1在建立單元格前需要先建立行 */

hssfrow row = sheet.createrow(0);//這裡就預設建立第一行

hssfcell cell = row.createcell(0);//預設建立第乙個單元格

cell.setcellstyle(cellstyle); //設定單元格樣式

cell.setcelltype(hssfcell.cell_type_string);//設定單元格內容的型別

cell.setcellvalue("hello world!");//設定單元格內容

使用自定義的背景色,需要額外的新增一些操作。這裡以16進製制的顏色為例,演示如何從16進製制的顏色一步步設為單元格的背景色。

下述方法的作用簡單來說就是:根據傳入的hssfpalette 畫板物件和color16進製制的顏色字串,先轉成rgb碼,然後使用hssfpalette畫板物件和index下標重新設定對應下標的顏色,並對hssfcellstyle單元格樣式進行顏色的設定。

強調說明:

(1)在進行顏色重新生成的時候,即如下**。需要注意index下標的範圍是在[8,64],設定成其他數字的下標,無效!

palette.setcoloratindex((short)(index), (byte) r, (byte) g, (byte) b);

(2)根據下標和rgb碼重新設定完顏色後,後續需要使用的話只需要根據下標設定單元格顏色即可。

hssfcellstyle.setfillforegroundcolor((short)(index));

/**

* 設定自定義顏色

* @param palette excel工作空間的繪畫板

* @param hssfcellstyle cell的單元格樣式物件

* @param color 16進製制顏色字串【如:#c1232b】

* @param index 下標,範圍在[8~64]

*/public static void setcellcolor(hssfpalette palette,hssfcellstyle hssfcellstyle,string color,int index)

關於poi這傢伙,裡邊還有許多的坑存在,以後遇到了會一一記錄下來。關於自定義顏色這一塊,其實也還沒有做好,但是這裡只是做一些簡單的實現,類似顏色鎖定等問題就不闡述了,因為基本上夠用了。

POI匯出Excel 合併單元格

合併方法 sheet.addmergedregion new cellrangeaddress firstrow,lastrow,firstcol,lastcol 引數分別表示 開始行索引,結束行索引,開始列索引,結束列索引.使用poi大致步驟 1.建立excel模板,並建立輸入流 fileinpu...

poi匯出excel單元格樣式設定

final xssfworkbook wb new xssfworkbook is final sheet datahssfsheet wb.getsheetat 0 獲取到第乙個工作表 final sheet datahssfsheetadd wb.getsheetat 1 獲取到第二個工作表 d...

POI設定Excel單元格樣式

poi中可能會用到一些需要設定excel單元格格式的操作小結 先獲取工作薄物件 hssfworkbook wb new hssfworkbook hssfsheet sheet wb.createsheet hssfcellstyle cellstyle wb.createcellstyle 一 設...