poi對excel操作筆記

2021-06-19 18:35:53 字數 1769 閱讀 4402

poi是apache提供的乙個讀寫excel文件的開源元件,在操作excel時常要合併單元格,合併單元格的方法是:

sheet.addmergedregion(new cellrangeaddress(1, 1, 0, 2));

自適應列寬度:

sheet.autosizecolumn(1); sheet.autosizecolumn(1, true);

這兩種方式都是自適應列寬度,但是注意這個方法在後邊的版本才提供,poi的版本不要太老。 注意:第乙個方法在合併單元格的的單元格並不好使,必須用第二個方法。

還有在自適應寬度的時候,有時候遇到單元格是公式單元格,自適應不起作用,那是因為單元格存的是公式,並不是真正的資料,解決方法:

hssfformulaevaluator evaluator = new hssfformulaevaluator(sheet.getworkbook());

cellvalue cell71val = evaluator.evaluate(cell71);

cell71.setcellvalue(cell71val.getnumbervalue());

將格式化後的資料再次set進去,就是真正的值了。

在excel中,單元格的寬度其實就是列的寬度,因為excel假設這一列的單元格的寬度肯定一致。所以要設定單元格的寬度,我們就得從列的寬度下手,hssfsheet有個方法叫setcolumnwidth,共有兩個引數:乙個是列的索引(從0開始),乙個是寬度。

現在假設你要設定b列的寬度,就可以用下面的**:

hssfworkbook hssfworkbook = new hssfworkbook();

hssfsheet sheet1 = hssfworkbook.createsheet("sheet1");

sheet1.setcolumnwidth(1, 100 * 256);這裡你會發現乙個有趣的現象,setcolumnwidth的第二個引數要乘以256,這是怎麼回事呢?其實,這個引數的單位是1/256個字元寬度,也就是說,這裡是把b列的寬度設定為了100個字元。

剛才說的是如何設定,那如何去讀取乙個列的寬度呢?直接用getcolumnwidth方法,這個方法只有乙個引數,那就是列的索引號。如下所示:

int col1width = sheet1.getcolumnwidth(1);

說完寬度,我們來說高度,在excel中,每一行的高度也是要求一致的,所以設定單元格的高度,其實就是設定行的高度,所以相關的屬性也應該在hssfrow上,它就是hssfrow.height和heightinpoints,這兩個屬性的區別在於heightinpoints的單位是點,而height的單位是1/20個點,所以height的值永遠是heightinpoints的20倍。

要設定第一行的高度,可以用如下**:

sheet1.createrow(0).height = 200*20;

或者sheet1.createrow(0).heightinpoints = 200;如果要獲得某一行的行高,可以直接拿hssfrow.height屬性的返回值。

你可能覺得一行一行設定行高或者一列一列設定列寬很麻煩,那你可以考慮使用hssfsheet.defaultcolumnwidth、hssfsheet.defaultrowheight和hssfsheet.defaultrowheightinpoints屬性。

一旦設定了這些屬性,如果某一行或者某一列沒有設定寬度,就會使用預設寬度或高度。**如下:

sheet1.defaultcolumnwidth=100*256;

sheet1.defaultrowheight=30*20;

使用POI對Excel進行操作

要使用poi,需要在pom檔案中加入以下依賴 org.apache.poi poi3.12 org.apache.poi poi ooxml 3.12 然後就是 如何使用它來讀取excel檔案了 inputstream is new fileinputstream filename excel檔名 ...

POI(對excel檔案物件操作)

poi官方api文件 參考部落格1 使用例子 參考部落格2 詳細講解hssfworkbook的屬性和方法 參考部落格3 excel的xls檔案通過網頁上傳到後台處理,後台對xls檔案的處理需要使用到poi,pom.xml檔案中先引入支援poi的依賴 dependency groupid org.ap...

POI 操作Excel疑難點筆記

在poi中,我們可以通過workbook,sheet,row,cell 物件分別對應excel檔案 工作表 行 單元格。在poi的使用中,我遇到了幾個非常詭異 捉摸不透的問題,現在記錄下來。1 關於sheet row cell的下標 一般情況下,我們讀取乙個excel 是這樣的 workbook w...