poi导出,单元格设置链接跳转到一个本地文件,代码如下:
XSSFHyperlink link = (XSSFHyperlink) creationHelper.createHyperlink(HyperlinkType.FILE);
//也尝试了file:///..\\lala.jpg加这个前缀的方式
link.setAddress("..\\lala.jpg");
但是发现这样子会一直报错:“Address of hyperlink must be a valid URI”
然后就看了setAddress方法,发现内部有一个校验逻辑如下:
public void setAddress(String address) {
validate(address);
_location = address;
//we must set location for internal hyperlinks
if (_type == HyperlinkType.DOCUMENT) {
setLocation(address);
}
}
@SuppressWarnings("fall-through")
private void validate(String address) {
switch (_type) {
// email, path to file and url must be valid URIs
case EMAIL:
case FILE:
case URL:
try {
new URI(address);
} catch (URISyntaxException e) {
throw new IllegalArgumentException("Address of hyperlink must be a valid URI", e);
}
break;
case DOCUMENT:
// currently not evaluating anything.
break;
default:
throw new IllegalStateException("Invalid Hyperlink type: " + _type);
}
}
那么问题来了。。。假如需要跳转本地文件,这个地址究竟应该怎么写呢~
<p>\\换成/</p>
link.setAddress("file://../lala.jpg");
好像是这么一回事~~~
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。