java 匯出自定義樣式excel
阿新 • • 發佈:2018-11-13
由於專案需要 要求匯出一個這樣的表格
然而 正常匯出的表格都是這樣嬸兒地
這種格式網上demo有很多就不詳細說了 ,主要說說上面三行是怎麼畫的。
第一行大標題,是9行合併成的一行,而且字型大小需要單獨設定
HSSFSheet sheet; HSSFCell cell; response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename="+filename+".xls"); sheet = workbook.createSheet("物料調撥單"); //第一行大標題 HSSFCellStyle tStyle = workbook.createCellStyle(); tStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); tStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); HSSFFont tFont = workbook.createFont(); //標題字型 tFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); tFont.setFontHeightInPoints((short)15); tStyle.setFont(tFont); short twidth = 15,theight=25*20; sheet.setDefaultColumnWidth(twidth); cell = getCell(sheet,0,0); cell.setCellStyle(tStyle); setText(cell,"物料調撥單"); sheet.getRow(0).setHeight(theight); sheet.addMergedRegion(new CellRangeAddress(0,0,0,8));
sheet.addMergedRegion(new CellRangeAddress(0,0,0,8)); 這個就是合併單元格方法,需要傳入4個int行的引數,
分別是 起始行,結束行,起始列,結束列。因為我們需要在第一行顯示1個9個格的標題所以行就是從0到0,列是從0到8
同理: 下面2行可以這麼設定合併
sheet.addMergedRegion(new CellRangeAddress(1, 1, 1, 2)); sheet.addMergedRegion(new CellRangeAddress(2, 2, 1, 2)); sheet.addMergedRegion(new CellRangeAddress(1, 1, 4, 5)); sheet.addMergedRegion(new CellRangeAddress(2, 2, 4, 5)); sheet.addMergedRegion(new CellRangeAddress(1, 1, 7, 8)); sheet.addMergedRegion(new CellRangeAddress(2, 2, 7, 8));
由於合併單元格,值取的是第一個單元格的值,所以後面的單元格可以直接賦值為空