使用了poi導出excel,最大的感受就是用過查過忘過,恰逢閒暇,賦小結一篇,以備後用
compile group: 'org.apache.poi', name: 'poi', version: '3.9'
這裏導出excel使用的方法是代碼生成,而非使用excel模板(雖然excel模板貌似應該好用點的)
這裏做個小結給大家:
-
基本用法:
//新建一個文檔
HSSFWorkbook wb = new HSSFWorkbook();
//新建一個sheet頁,名稱爲sheet1
HSSFSheet sheet = wb.createSheet("sheet1");
//新建一個樣式
HSSFCellStyle style2 = wb.createCellStyle();//之後用到的所有樣式都需要在這裏設置並賦值
//新建一個字體
HSSFFont whiteFont = wb.createFont();
//新建第一行
HSSFRow row1 = sheet.createRow(0);//注意這裏所有的索引都是從0開始
//第一行裏創建第一個單元格
cell = row1.createCell(0);//即第一行第一個單元格
//單元格里存放內容
cell.setCellValue("寫入成功");
-
設置顏色字體
whiteFont.setColor(IndexedColors.WHITE.getIndex());//顏色-白
whiteFont.setFontHeightInPoints((short) 9);//大小
whiteFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗
-
設置單元格樣式
style2.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中格式
//設置背景色
style2.setFillForegroundColor(IndexedColors.GREEN.getIndex());//綠色背景
style2.setFillPattern(CellStyle.SOLID_FOREGROUND);
//設置邊框
style2.setBorderTop(CellStyle.SOLID_FOREGROUND);//上邊框
style2.setBorderBottom(CellStyle.SOLID_FOREGROUND);
style2.setBorderLeft(CellStyle.SOLID_FOREGROUND);
style2.setBorderRight(CellStyle.SOLID_FOREGROUND);
-
合併單元格
//合併單元格
CellRangeAddress region = new CellRangeAddress(1, 1, 0, 15);
RegionUtil.setBorderBottom(HSSFCellStyle.SOLID_FOREGROUND, region, sheet, wb);
RegionUtil.setBorderLeft(HSSFCellStyle.SOLID_FOREGROUND, region, sheet, wb);
RegionUtil.setBorderRight(HSSFCellStyle.SOLID_FOREGROUND, region, sheet, wb);
RegionUtil.setBorderTop(HSSFCellStyle.SOLID_FOREGROUND, region, sheet, wb);
sheet.addMergedRegion(region);
設置單元格的屬性
HSSFDataFormat df = wb.createDataFormat();//format類
//小數兩位樣式
HSSFCellStyle style_content_f2 = wb.createCellStyle();
style_content_f2.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
style_content_f2.setDataFormat(df.getFormat("#,#0.00"));
style_content_f2.setFont(font_content);
//保留整數樣式的金額
HSSFCellStyle style_content_f0 = wb.createCellStyle();
style_content_f0.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
style_content_f0.setDataFormat(df.getFormat("#,#0"));
style_content_f0.setFont(font_content);
//保留整數樣式
HSSFCellStyle style_content_zs = wb.createCellStyle();
style_content_zs.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style_content_zs.setDataFormat(df.getFormat("0"));//#.##
style_content_zs.setFont(font_content);
//日期格式,年月日時分秒
HSSFCellStyle style_dateTime = wb.createCellStyle();
style_dateTime.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style_dateTime.setDataFormat(df.getFormat("yyyy-MM-dd HH:mm:ss"));
style_dateTime.setFont(font_content);
//日期格式,年月日
HSSFCellStyle style_date = wb.createCellStyle();
style_date.setAlignment(HSSFCellStyle.ALIGN_CENTER);
style_date.setDataFormat(df.getFormat("yyyy-MM-dd"));
style_date.setFont(font_content);
//設置爲datetime格式
cell.setCellStyle(style_dateTime);
cell.setCellValue(value);