做統(tǒng)計報表功能的時候盛末,想要做出好看的表格,經(jīng)常要進行“合并單元格”操作矿卑。小編今天提供一個通用的方法喉恋,就能快速地完成啦!
private void mergeCell(XSSFSheet sheet, int firstRow, int lastRow, int firstCol, int lastCol, String cellValue, Boolean isBold) {
XSSFWorkbook workBook = sheet.getWorkbook();
// 標題行樣式
XSSFFont blodFont = workBook.createFont();
blodFont.setBold(true);
XSSFCellStyle headerStyle = workBook.createCellStyle();
if(isBold) { //是否加粗
headerStyle.setFont(blodFont); // 設置字體
headerStyle.setFillBackgroundColor(HSSFColor.LIGHT_GREEN.index); //設置背景色
headerStyle.setFillForegroundColor(HSSFColor.LIGHT_GREEN.index);// 設置前景色
headerStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
}
headerStyle.setAlignment(HorizontalAlignment.CENTER); // 水平對齊
headerStyle.setVerticalAlignment(VerticalAlignment.CENTER);
headerStyle.setBorderBottom(CellStyle.BORDER_THIN); // 下邊框
headerStyle.setBorderLeft(CellStyle.BORDER_THIN);// 左邊框
headerStyle.setBorderTop(CellStyle.BORDER_THIN);// 上邊框
headerStyle.setBorderRight(CellStyle.BORDER_THIN);// 右邊框
if(!(firstRow == lastRow && firstCol == lastCol)){
CellRangeAddress address = new CellRangeAddress(firstRow, lastRow, firstCol, lastCol);
sheet.addMergedRegion(address);
RegionUtil.setBorderBottom(1, address, sheet, workBook);
RegionUtil.setBorderLeft(1, address, sheet, workBook);
RegionUtil.setBorderRight(1, address, sheet, workBook);
RegionUtil.setBorderTop(1, address, sheet, workBook);
}
XSSFRow row = null;
if(sheet.getRow(firstRow) != null) {
row = sheet.getRow(firstRow);
}else {
row = sheet.createRow(firstRow);
}
XSSFCell cell = row.createCell(firstCol);
cell.setCellStyle(headerStyle);
cell.setCellValue(cellValue);
}
那么粪摘,怎么調(diào)用呢瀑晒?
public String exportExcel(HttpServletRequest request) {
String path = request.getAttribute("path").toString();
String title = "臨時";
FileOutputStream outputStream = null;
try {
if (request.getParameter("title") != null) {
title = request.getParameter("title");
}
// 臨時xlsx文件存儲路徑
path += "\\" + title + ".xlsx";
File file = new File(path);
File fileParent = file.getParentFile();
if(!fileParent.exists()){
fileParent.mkdirs();
}
file.createNewFile();
// 創(chuàng)建工作簿
XSSFWorkbook workBook = new XSSFWorkbook();
XSSFSheet sheetHz = workBook.createSheet("記錄");
mergeCell(sheet,1,3,0,0,"名稱", true);
outputStream = new FileOutputStream(new File(path));
workBook.write(outputStream);
workBook.close();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
return title + ".xlsx";
}