jxl使用formula插入hyperlink时wps无法点开链接问题

网上有很多文章说使用formula可以生成hyperlink函数,用来在excel里面加入链接。确实是可以的。
但是生成的excel用office可以打开设置的链接,wps却打不开,这是为什么呢?
本文深入到jxl源码来研究这个问题。

通过对源码的debug,我发现是由于jxl通过formula方式生成hyperlink时,单元格公式有误导致的。
比如写入的是String formu = "HYPERLINK(\"app/images\",\"hahah\")";
得到的excel的cell里却是 ="app/images" HYPERLINK("hahah")
这是错误的,不标准的函数写法。标准的写法应该是=HYPERLINK("app/images","hahah")。
奇怪的是debug的过程中,我发现代表函数记录的对象FormulaRecord中的formulaToParse跟我设置的formu是一致的,而且经过paser解析后的函数语法树与formu定义的语法也是一致的,理论上写入excel的时候不应该发生上述的情况。但是结果确实是出现了上述这种情况。如果想彻底理解为什么,就要靠大家对excel文件的结构进行深入的挖掘了,笔者暂时没那个能力去继续往下挖。

目前能想到的解决方法有两个:
一. 是使用poi
代码如下:
// 创建Excel的工作书册 Workbook,对应到一个excel文档
HSSFWorkbook wb = new HSSFWorkbook();

// 创建Excel的工作sheet,对应到一个excel文档的tab
HSSFSheet sheet = wb.createSheet("sheet1");

// 创建Excel的sheet的一行
HSSFRow row = sheet.createRow(0);
row.setHeight((short) 500);// 设定行的高度
// 创建一个Excel的单元格
HSSFCell cell = row.createCell(0);
cell.setCellFormula("HYPERLINK(\"" + "app/images"+ "\",\"" + "haha"+ "\")");

FileOutputStream os = new FileOutputStream("d:\\testpoi.xls");
wb.write(os);
os.close();
经过测试,得到的链接是正确格式的链接。

二.重写jxl的实现
这种比较暴力,直接修改jxl的源码,重新实现。不过难度也是很大的,需要对excel文件有深入的理解,同时对jxl有很深的理解才行。

如果大家有什么更好的方案,欢迎留言!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值