使用XSSFHyperlink,id中有空格,做超链接失效,我的解决办法!

我想做点击第一个sheet页里的id,跳转到后面的sheet页中
其中有个id里有空格,不知道是不是这个导致了超链接失效?
下面是我的代码,大佬帮我看看
在这里插入图片描述

@Override
	public void addHyperlink(List<Map<String, Object>> exportList, XSSFWorkbook workbook, XSSFSheet sheet, int rowcount) {
		 for (int i = 0; i < rowcount; i++) {
			 
			     Map<String, Object> map = exportList.get(i);
	        	String cncid = MapUtils.getString(map, "CNC_ID");
	        	// 处理CNC_ID中可能出现的空格
	        	String updStr = cncid.replace(" ","");
	        	
				// 增加超链接
	        	XSSFRow row = sheet.getRow(i+1);
	        	XSSFCell cell = row.getCell(0);
	        	cell.setCellValue(cncid);
	        	CreationHelper createHelper= workbook.getCreationHelper();
	        	XSSFHyperlink link= (XSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_URL);
	        	// link.setAddress("#报表"+i+"!A10");
	        	link.setAddress("#'"+cncid+"'!A1");
	        	cell.setHyperlink(link);
	        	
	        	/* 设置为超链接的样式 */
	        	XSSFCellStyle linkStyle= workbook.createCellStyle();
	        	XSSFFont cellFont= workbook.createFont();
	        	cellFont.setUnderline((byte)0);
	        	cellFont.setColor(HSSFColor.BLUE.index);
	        	linkStyle.setFont(cellFont);
	        	cell.setCellStyle(linkStyle);
			}
		
	}

在这里插入图片描述

以下是我自己找出来的答案,跟id有没有空格没关系,POI中的setAddress(),源码里会做校验,不允许有空格,但是下划线等特殊字符可以使用单引号扩住以修复,详情看图
在这里插入图片描述
后来,我在生成sheet页时,将cnc_id做了替换,然后sheet页名称就是去除空格后的sheet页名
在这里插入图片描述
导出效果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值