主要代码
Workbook workbook = new SXSSFWorkbook(200);
//sheet页名和表头
Sheet sheet = workbook.createSheet(paramMap.get("modelDesc"));
paramMap.put("index_lvl", paramMap.get("index_lvl"));
//显示字段
paramMap.put("is_show", "1");//是否显示字段
//主表表头标题、子表表头标题
paramMap.put("main_flag", "1");
String auditType = paramMap.get("auditType");
Map<String, String> auditTypeInfo = auditDataUtilMapper.getAuditTypeInfo(auditType);
String listTableName = auditTypeInfo.get("mainTableName");
paramMap.put("listTableName",listTableName);
List<Map<String, String>> fieldConfig = auditModelDetailMapper.selectDetailFieldConfig(paramMap);
// ----------------------- 组装sheetData(colNames,colDatas,tableName,dataList) ----------------------
Map<String, Object> sheetDataForResult = getSheetDataForResult(fieldConfig, paramMap);
List<String> sheetColNames = (List<String>) sheetDataForResult.get("sheetColNames");
List<String> sheetColCode = (List<String>) sheetDataForResult.get("sheetColCode");
List<String> sheetColFormats = (List<String>) sheetDataForResult.get("sheetColFormats");
List<String> sheetShowFlags = (List<String>) sheetDataForResult.get("sheetShowFlags");
Row row1 = sheet.createRow(0);
for (int i = 0; i < sheetColNames.size(); i++) {
if (sheetShowFlags.get(i).equals("1")) {
row1.createCell(i).setCellValue(sheetColNames.get(i));
}
}
listMainData = auditModelDetailMapper.selectListMainData(paramMap);//全部0
//生成表格数据
for (int i = 0; i < listMainData.size(); i++) {
Row row = sheet.createRow(i + 1);
for (int j = 0; j < sheetColCode.size(); j++) {
if (sheetShowFlags.get(j).equals("1")) {
row.createCell(j).setCellValue(listMainData.get(i).get(sheetColCode.get(j).toUpperCase()));
}
}
}
//添加水印
workbook = ExcelUtils.addBgOfExcel("*****平台", (SXSSFWorkbook) workbook);
return workbook;
水印部分代码
PoiUtil.Watermark watermark = new PoiUtil.Watermark();
watermark.setText(bgChar);
//生成水印图片
BufferedImage image = PoiUtil.createWatermarkImage(watermark);
// 导出到字节流B
XSSFWorkbook workbook = workbookSXSS.getXSSFWorkbook();
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(image, "png", os);
int pictureIdx = workbook.addPicture(os.toByteArray(), Workbook.PICTURE_TYPE_PNG);
POIXMLDocumentPart poixmlDocumentPart = workbook.getAllPictures().get(pictureIdx);
for (int i = 0; i < workbook.getNumberOfSheets(); i++) {//获取每个Sheet表
XSSFSheet sheet = workbook.getSheetAt(i);
PackagePartName ppn = poixmlDocumentPart.getPackagePart().getPartName();
String relType = XSSFRelation.IMAGES.getRelation();
//add relation from sheet to the picture data
PackageRelationship pr = sheet.getPackagePart().addRelationship(ppn, TargetMode.INTERNAL, relType, null);
//set background picture to sheet
sheet.getCTWorksheet().addNewPicture().setId(pr.getId());
}
return workbook;