這個問題在網上搜,都是說如下即可:
//新增批註
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...