NPOI HSSFHyperlink HyperlinkType.File 乱码(??)

来源:互联网 发布:js指定浏览器打开网页 编辑:程序博客网 时间:2024/06/13 05:40

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

0 0
原创粉丝点击