NPOI HSSFHyperlink HyperlinkType.File 乱码(??)

问题现象: 在用NPOI导出Excel文件后,发现用Excel软件打开创建的文件时文件

                   链接(HyperlinkType.File)路径中的中文是乱码(??) 而URl链接路径中

                   的中文是正常的.

问题原因: 于是看了NOPI的源码,发现链接类型  HyperlinkType.File 和 HyperlinkType.Url 

                   在将路径序列化的方法是不一样的:

                   a. HyperlinkType.Url  类型用 StringUtil.PutUnicodeLE 方法以 "UTF-16LE" 编

                       码的方式写到Excel文件中

                   b. HyperlinkType.File 类型用 StringUtil.PutCompressedUnicode 方法以 

                     "ISO-8859-1" 编码的方式写到Excel文件中,"ISO-8859-1" 是不能表示中

                      文的,在将路径转成 "ISO-8859-1" 编码后,原先的内容以改变,在Excel软

                       就显示为乱码(??)

解决办法:  将原先的代码:
                   HSSFHyperlink link = new HSSFHyperlink(HyperlinkType.File);

                   string strPath = "\\目录\\文件名.jpg";

                   link.Address =  strPath 

                   改为以下代码: 
                   HSSFHyperlink link = new HSSFHyperlink(HyperlinkType.File);
                   string strPath = "\\目录\\文件名.jpg";
                   //----------------------------增加的代码------------------------------------
                   byte[] srcBytes = Encoding.Default.GetBytes(strPath );
                   string strPath = Encoding.GetEncoding("ISO-8859-1").GetString(srcBytes); 

                   //-------------------------------------------------------------------------------
                   link.Address =  strPath 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值