java 后台画execl表格 在日常开发经常有需要 以下我的相关模板 给大家分享借鉴以下 希望对你有帮助
相关删除和转换base64流在我其他文章有 在这就不一一复制
结尾附图以供参考
/**
* 生成execl模板
* @param sheetName 文件名
* @param codeNumber 标题自定义参数 与生成模板无关
* @param list 数据集合
* @author HF . HS
* @return
* @throws IOException
*/
public String exportExcel(String sheetName,Integer codeNumber,List<String>list) throws IOException {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet(sheetName);
sheet.setDefaultColumnWidth(15);
// 生成一个样式(标题)
HSSFCellStyle style = wb.createCellStyle();
HSSFFont fontStyle = wb.createFont();
fontStyle.setBold(true); //加粗
fontStyle.setFontHeightInPoints((short) 16); //设置标题字体大小
fontStyle.setColor(HSSFColor.RED.index);
style.setFont(fontStyle);
//二级标题
HSSFCellStyle twoStyle = wb.createCellStyle();
HSSFFont twofontStyle = wb.createFont();
twofontStyle.setFontHeightInPoints((short) 14); //设置标题字体大小
twoStyle.setFont(twofontStyle);
//普通文本
HSSFCellStyle threeStyle = wb.createCellStyle();
HSSFFont threeFontStyle = wb.createFont();
threeFontStyle.setFontHeightInPoints((short) 14); //设置标题字体大小
threeStyle.setFont(threeFontStyle);
//表头
HSSFRow row = sheet.createRow(0);
HSSFCell cell;
cell = row.createCell(0);
cell.setCellValue("激活码总览表(" + codeNumber + ")");
cell.setCellStyle(style);
wb.getSheet(sheetName).addMergedRegion(new CellRangeAddress(0, 1, 0, 8));
//创建列标题栏所在行
row = sheet.createRow(2);
//根据选择的字段生成表头--标题
HSSFCell cell1;
cell1 = row.createCell(0);
wb.getSheet(sheetName).addMergedRegion(new CellRangeAddress(2, 3, 0, 0));
cell1.setCellValue("序号");
cell1.setCellStyle(twoStyle);
cell1 = row.createCell(1);
cell1.setCellValue("激活码");
cell1.setCellStyle(twoStyle);
wb.getSheet(sheetName).addMergedRegion(new CellRangeAddress(2, 3, 1, 8));
Integer num = 2;
Integer firstrow = null;
Integer lastrow = null;
for (int i = 0; i < list.size(); i++) {
if (i == 0) {
//创建列标题栏所在行
//根据选择的字段生成表头--标题
HSSFCell cell2;
firstrow = 4;
lastrow = 5;
row = sheet.createRow(firstrow);
cell2 = row.createCell(0);
cell2.setCellValue(1);
cell2.setCellStyle(threeStyle);
wb.getSheet(sheetName).addMergedRegion(new CellRangeAddress(firstrow,lastrow,0,0));
HSSFCell cell3;
cell3 = row.createCell(1);
cell3.setCellValue(list.get(0));
cell3.setCellStyle(threeStyle);
wb.getSheet(sheetName).addMergedRegion(new CellRangeAddress(firstrow,lastrow,1,8));
} else {
firstrow += 2;
lastrow += 2;
//创建列标题栏所在行
row = sheet.createRow(firstrow);
// row = sheet.createRow(4+i);
//根据选择的字段生成表头--标题
HSSFCell cell4;
cell4 = row.createCell(0);
cell4.setCellValue(i+1);
cell4.setCellStyle(threeStyle);
wb.getSheet(sheetName).addMergedRegion(new CellRangeAddress(firstrow, lastrow, 0, 0));
HSSFCell cell5;
cell5 = row.createCell(1);
cell5.setCellValue(list.get(i));
cell5.setCellStyle(threeStyle);
wb.getSheet(sheetName).addMergedRegion(new CellRangeAddress(firstrow, lastrow, 1, 8));
}
}
File PDFFilePath = new File("codeExecl.xls");
FileOutputStream exportXls = new FileOutputStream(PDFFilePath);
wb.write(exportXls);
exportXls.close();
//自定义方法 文件转base64流
String strResult = PDFToBase64(PDFFilePath);
strResult = strResult.replaceAll("\r\n", "");
//删除创建好的无用文件
deleteFile("codeExecl.xls");
return strResult;
}
效果图如下