NPOI HSSFHyperlink HyperlinkType.File 乱码(??)

本文详细解析了NPOI在导出Excel文件时中文乱码问题的原因,并提供了有效的解决方法,包括修改代码以正确处理中文路径编码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题现象: 在用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 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值