1. 程式人生 > >poi關於為excle檔案新增批註被覆蓋問題

poi關於為excle檔案新增批註被覆蓋問題

POI 批註新增 注意事項

在使用POI上傳Excel時,對上傳的Excel內容進行校驗時,錯誤資訊背景加紅,並且加批註
/**
* 功能:對校驗的excel表的出錯的地方背景變紅,並且新增備註
* @param hssfWorkbook
* @param sheet所操作的excel表
* @param cell所校驗的單元格
* @param msg準備新增的批註資訊
* @param r 當前所操作的行
* @param allrow 是這個sheet表一共有幾行
* @param 儲存路徑
*/
private void addAnnotateForExcel(HSSFWorkbook hssfWorkbook,HSSFSheet sheet,HSSFCell cell,HSSFPatriarch p,String msg,String savePath,int r,int allrow){
//為單元格新增批註
HSSFComment comment=
p.createComment(newHSSFClientAnchor(0,0,0,0,(short)3,3,(short)5,6));
comment.setString(new HSSFRichTextString(msg));
cell.setCellComment(comment);
//設定背景顏色
HSSFCellStyle style=hssfWorkbook.createCellStyle();
style.setFillPattern(HSSFCellStyle.FINE_DOTS );
//設定前景色
style.setFillForegroundColor(new HSSFColor.RED().getIndex());
//設定背景色
style.setFillBackgroundColor(new HSSFColor.RED().getIndex());
//給單元格新增風格
cell.setCellStyle(style);
if (r==(allrow-1)) {
FileOutputStream stream =null;
try {
stream = new FileOutputStream(savePath);
hssfWorkbook.write(stream);
} catch (Exception e) {
e.printStackTrace();
}finally{
if (stream!=null) {
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}}}}
}

注:
1.一張sheet表,只能建立一個繪畫物件HSSFPatriarch,如果一張表建立多個繪畫物件HSSFPatriarch,在新增批註時,會出現錯誤,會導致只有最後一行添加了批註
2. HSSFWorkbook 這種建立的工作表,只能對第一張工作表操作
3.在輸出過程中,不能新增一次輸出一次,必須要等到對最後一行資料校驗完畢後才能輸出,否則會覆蓋點之前的批註或者只能在第一個上新增批註
4,前景色和背景色要配合著使用,否則無法實現背景加色的效果