2021-06-22 加水印后原本EXCEL内容被覆盖

主要代码

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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值