问题现象: 在用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
本文详细解析了NPOI在导出Excel文件时中文乱码问题的原因,并提供了有效的解决方法,包括修改代码以正确处理中文路径编码。
6239

被折叠的 条评论
为什么被折叠?



