使用POI生成Excel文件,可以自动调整excel列宽 .
?http://blog.csdn.net/xiaoiaozi/article/details/1791709
在開發中經常需要用到對Excel文件的操作,現在根據網上的資料整理如下:
import?java.io.FileOutputStream;
import?org.apache.poi.hssf.usermodel.HSSFCell;
import?org.apache.poi.hssf.usermodel.HSSFCellStyle;
import?org.apache.poi.hssf.usermodel.HSSFFont;
import?org.apache.poi.hssf.usermodel.HSSFRow;
import?org.apache.poi.hssf.usermodel.HSSFSheet;
import?org.apache.poi.hssf.usermodel.HSSFWorkbook;
import?org.apache.poi.hssf.usermodel.HSSFRichTextString;
import?org.apache.poi.hssf.usermodel.HSSFDataFormat;
import?org.apache.poi.hssf.usermodel.HSSFComment;
import?org.apache.poi.hssf.usermodel.HSSFPatriarch;
import?org.apache.poi.hssf.usermodel.HSSFClientAnchor;
public?class?PoiCreateExcelTest?...{
????public?static?void?main(String[]?args)?...{
????????/**?*//**?
?????????*?@see?<a?href="http://poi.apache.org/hssf/quick-guide.html#NewWorkbook">For?more</a>
?????????*/????????
????????//?創建新的Excel?工作簿
????????HSSFWorkbook?workbook?=?new?HSSFWorkbook();
????????
????????//?在Excel工作簿中建一工作表,其名為缺省值,?也可以指定Sheet名稱
????????HSSFSheet?sheet?=?workbook.createSheet();
????????//HSSFSheet?sheet?=?workbook.createSheet("SheetName");?
????????
????????//?用于格式化單元格的數據
????????HSSFDataFormat?format?=?workbook.createDataFormat();
????????
????????//?創建新行(row),并將單元格(cell)放入其中.?行號從0開始計算.
????????HSSFRow?row?=?sheet.createRow((short)?1);
????????//?設置字體
????????HSSFFont?font?=?workbook.createFont();
????????font.setFontHeightInPoints((short)?20);?//字體高度
????????font.setColor(HSSFFont.COLOR_RED);?//字體顏色
????????font.setFontName("黑體");?//字體
????????font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);?//寬度
????????font.setItalic(true);?//是否使用斜體
//????????font.setStrikeout(true);?//是否使用劃線
????????//?設置單元格類型
????????HSSFCellStyle?cellStyle?=?workbook.createCellStyle();
????????cellStyle.setFont(font);
????????cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);?//水平布局:居中
????????cellStyle.setWrapText(true);
????????
????????//?添加單元格注釋
????????//?創建HSSFPatriarch對象,HSSFPatriarch是所有注釋的容器.
????????HSSFPatriarch?patr?=?sheet.createDrawingPatriarch();
????????//?定義注釋的大小和位置,詳見文檔
????????HSSFComment?comment?=?patr.createComment(new?HSSFClientAnchor(0,?0,?0,?0,?(short)4,?2,?(short)?6,?5));
????????//?設置注釋內容
????????comment.setString(new?HSSFRichTextString("可以在POI中添加注釋!"));
????????//?設置注釋作者.?當鼠標移動到單元格上是可以在狀態欄中看到該內容.
????????comment.setAuthor("Xuys.");
????????
????????//?創建單元格
????????HSSFCell?cell?=?row.createCell((short)?1);
????????HSSFRichTextString?hssfString?=?new?HSSFRichTextString("Hello?World!");
????????cell.setCellValue(hssfString);//設置單元格內容
????????cell.setCellStyle(cellStyle);//設置單元格樣式
????????cell.setCellType(HSSFCell.CELL_TYPE_STRING);//指定單元格格式:數值、公式或字符串
????????cell.setCellComment(comment);//添加注釋
????????//格式化數據
????????row?=?sheet.createRow((short)?2);
????????cell?=?row.createCell((short)?2);
????????cell.setCellValue(11111.25);
????????cellStyle?=?workbook.createCellStyle();
????????cellStyle.setDataFormat(format.getFormat("0.0"));
????????cell.setCellStyle(cellStyle);
????????row?=?sheet.createRow((short)?3);
????????cell?=?row.createCell((short)?3);
????????cell.setCellValue(9736279.073);
????????cellStyle?=?workbook.createCellStyle();
????????cellStyle.setDataFormat(format.getFormat("#,##0.0000"));
????????cell.setCellStyle(cellStyle);
????????
????????
????????sheet.autoSizeColumn((short)0);?//調整第一列寬度
????????sheet.autoSizeColumn((short)1);?//調整第二列寬度
????????sheet.autoSizeColumn((short)2);?//調整第三列寬度
????????sheet.autoSizeColumn((short)3);?//調整第四列寬度
????????try?...{
????????????FileOutputStream?fileOut?=?new?FileOutputStream("C:/3.xls");
????????????workbook.write(fileOut);
????????????fileOut.close();
????????}?catch?(Exception?e)?...{
????????????System.out.println(e.toString());
????????}
????}
}
最后自動調整列寬的代碼是在找了好久以后不經意間找著的,很驚喜!
如果編譯器提示沒有autoSizeColumn這個方法,那可能是你的poi版本太低的緣故,我用的是poi3.0版本。
總結
以上是生活随笔為你收集整理的使用POI生成Excel文件,可以自动调整excel列宽 .的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: poi jxl 生成EXCEL 报表
- 下一篇: order by case when