隨著業務需求的擴充,簡簡單單的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 一 設...