我想做点击第一个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页名
导出效果: