1. 程式人生 > >java 匯出自定義樣式excel

java 匯出自定義樣式excel

由於專案需要 要求匯出一個這樣的表格

然而 正常匯出的表格都是這樣嬸兒地

這種格式網上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));

由於合併單元格,值取的是第一個單元格的值,所以後面的單元格可以直接賦值為空