最近在使用poi操作excel的時候遇到了一些問題,分享一下其中一些坑的點。
網上很多版本對於poi中樣式中樣式設置都是poi之前的操作,在poi3.17版本中並不能直接使用,自己給自己挖了一個大坑;
舉個例子,在poi導出設置單元格樣式的居中問題時候,網上大部分的操作代碼如下:
- XSSFCellStyle cellStyle = wb.createCellStyle();
- cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 居中
- cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);//垂直
但是使用 poi3.17版本的時候,系統會報沒有 ALIGN_CENTER,VERTICAL_CENTER 這個參數,一開始以爲是poi 3.17導的不完全,然後我就把所有的包都重新打了一遍,然後完全沒有解決,網上百度解決方法,幾乎找不動其他的方式,poi3.17的操作手冊也並沒有找到,最後終於在一位博主的分享中(感謝阿炳的博客園https://www.cnblogs.com/acm-bingzi/p/poi1.html。原文鏈接),找到了解決方案,實際實現代碼如下:
- XSSFCellStyle cellStyle = wb.createCellStyle();
- cellStylestyle.setAlignment(HorizontalAlignment.CENTER);// 居中
- cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);;//垂直
同時在設置邊框時候,也有相應的同樣問題,HSSFCellStyle 中同樣報錯沒有其中的值
- cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下邊框
- cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左邊框
- cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上邊框
- cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右邊框
最後修改方案如下,接用BordyStyle中的值來修改;
- cellStyle.setBorderBottom(BorderStyle.THIN); //下邊框
- cellStyle.setBorderLeft(BorderStyle.THIN);//左邊框
- cellStyle.setBorderTop(BorderStyle.THIN);//上邊框
- cellStyle.setBorderRight(BorderStyle.THIN);//右邊框