利用POI合並單元格其實也是一個很簡單的事情,就兩行代碼
CellRangeAddress region = new CellRangeAddress(firstRow, lastRow, firstCol, lastCol); //初始行,終止行,初始列,終止列 sheet.addMergedRegion(region);
合並單元格並不需要什么,只需要你指定工作表sheet。然后CellRangeAddress()方法的四個參數分別是合並的初始行,終止行,初始列,終止列。而且合並單元格的時候,合並后的單元格里面的內容只會保存左上角的第一個單元格的內容。
下面我舉個栗子,相信你們就會懂了。
String path = "D:\\test0808\\"; //1.創建工作簿 Workbook workbook = new HSSFWorkbook(); //2.創建一個工作表 Sheet sheet = workbook.createSheet("博客園測試"); //3.創建一行 Row row1 = sheet.createRow(0); //4.創建兩個個單元格 Cell cell = row1.createCell(0); Cell cell2 = row1.createCell(1); cell.setCellValue("第一個單元格"); cell2.setCellValue("第二個單元格"); FileOutputStream fileOutputStream = new FileOutputStream(path + "在家測試0802.xls"); // fileOutputStream.flush(); workbook.write(fileOutputStream); fileOutputStream.flush(); fileOutputStream.close(); System.out.println("測試成功");
}
創建的Excel文件如下
如果我對兩個單元格進行合並,那么內容只會保留“第一個單元格”字樣。
需要注意的是,合並單元格指定的總單元格必須大於一。也就是初始行,終止行和行差必須大於一,當初始列,終止列是用一列時。相反,初始列,終止列的列差必須大於一,當初始行,終止行是同一行時。但是有些版本就可以支持合並一個單元格,因為我在公司用的版本跟我在家的不一樣,我家里的版本就能夠支持合並單個單元格,這里小編就不多舉例了,大家用的時候看報錯信息就能夠知道了。
這里做一個補充,像小編我在工作的時候就遇到一個問題,我合並單元格之后需要將數據填入信息,這時正如同上面說到的,“合並后的單元格里面的內容只會保存左上角的第一個單元格的內容”,所以我們填數據時,就應該將數據填到第一個單元格。此時我們需要用到getRow()和getCell()方法拿到第一個單元格,並寫入數據.但是getCell和getRow()如果當單元格和row不存在時,會報空指針異常,所以我們一般用createCell()代替getCell().此時也是需要用sheet(工作表)才能調用getRow()方法.sheet.getRow(firstRow);
//拿到單元格,把數值放到第一列 Row mergeRow = sheet.getRow(firstRow); Cell mergeCell = mergeRow.createCell(writeSumCol); mergeCell.setCellValue(sumRent);