NPOI 匯出新增批註功能

2022-07-29 00:21:26 字數 1448 閱讀 7778

這個問題在網上搜,都是說如下即可:

//新增批註

hssfpatriarch patr = (hssfpatriarch)sheet.createdrawingpatriarch();

hssfcomment comment12 = patr.createcomment(new hssfclientanchor(0, 0, 0, 0, 1, 2, 2, 3));//批註顯示定位

comment12.string = new hssfrichtextstring("請填寫完整部門名稱!");

hssfcell cell12 = (hssfcell)headerrow.createcell(12);//將批註給予單元格

cell12.cellcomment = comment12;

但是有個比較重要的地方需要澄清下,就是批註的位置和大小,這是由hssfclientanchor八個引數控制的,千萬不能簡單的寫hssfclientanchor(0, 0, 0, 0, 1, 2, 2, 3),

關於hssfclientanchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的引數,有必要在這裡說明一下:

dx1:起始單元格的x偏移量;

dy1:起始單元格的y偏移量;

dx2:終止單元格的x偏移量;

dy2:終止單元格的y偏移量;

col1:起始單元格列序號;

row1:起始單元格行序號;

col2:終止單元格列序號;

row2:終止單元格行序號;

其實主要是前四個是偏移量,後四個關係到批註的位置和大小。

以我自己做的乙個例子來說:

hssfcomment comment1 = (hssfcomment)patr.createcellcomment(new hssfclientanchor(255, 125, 1023, 150, colindex + 1, rowindex - 1,  colindex + 2, rowindex + 4));

後四個引數的解釋是:

rowindex 是當前單元格是第幾行,colindex 是當前單元格是第幾列。通過行列是可以定位到當前的單元格的。

colindex + 1 對應上面的引數是col1  表示批註起始的位置是當前單元格的列數的下一列,即原來是第5列,則批註起在第6列。

rowindex - 1 對應上面的引數是row1  表示皮質起始的位置是當前單元格行數的上一行,即原來是第2行,則批註起在第1行。

colindex + 2, rowindex + 4  這兩個引數則是單元格終止的位置   +2  +4  則是決定了批註的大小,道理同colindex + 1,rowindex - 1 。

但是npoi匯出有個坑   就是批註大小會隨著所在位置的單元格大小變動  這個影響不大  如果想解決這個問題   只能換匯出方法了。。。

千萬別按照網上人家寫的(0, 0, 0, 0, 1, 2, 2, 3),這會坑死的。

NPOI建立批註

很多人不怎麼用excel中的批註,所以我特地截了張圖,我們先看一下批註的效果圖 批註主要有三個屬性需要設定,乙個是批註的位置和大小 乙個是批註的文字 還有乙個是批註的作者,批註的位置和大小,在excel中是與單元格密切相關的,npoi中通過hssfclientanchor或者xssfclientan...

NPOI 給匯出Excel新增簡單樣式

需求分析 如下圖為我之前匯出的excel資料,沒有一點樣式,標題行不明顯,各個列的資料緊湊,檢視資料時得手動拉寬每列,故這次要針對以上問題對它進行優化 結果展示 每日所有資料按每個總成乙個工作簿匯出到excel中 excel資料內容 excel表頭 public static hssfworkboo...

使用NPOI匯出,讀取EXCEL(可追加功能)

使用npoi匯出,讀取excel,具有可追加功能 看 1 using system 2using system.collections.generic 3using system.text 4using system.io 5using system.data 6using npoi.ss.user...