博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
火狐浏览器导出EXCEL 表格,文件名乱码问题
阅读量:6859 次
发布时间:2019-06-26

本文共 1812 字,大约阅读时间需要 6 分钟。

牢骚:今天又是一个不太平的日子,打开任务表一看里面有一堆bug,其中有一个就是今天要说的这个关于商品导出的问题,本功能是临时授命接一个任务,本来呢这个导出功能在系统各大模块已经都很成熟了,但是总有一个问题:导出来的excel表格不是真正的.xls格式的文件所以呢就造成了一个后果,那就是将导出来的列表修改内容或者不修改保存后再导入到系统里面就会出现格式不正确的报错现象,原因很简单:导出时通过接口查询出所需要的数据模型,然后将这个model循环遍历到html页面里,最终通过System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition","attachent;fileName=" + "商品批量编辑列表.xls"); System.Web.HttpContext.Current.Response.ContentType = "application/ms-excel";
通过这样的操作可以将列表导出到excel里面,问题来了,其实我们导出的是什么格式?并不是真正的excel格式,而是普通的HTML格式,只不过excel支持html的格式的数据而已,所以在导入的时候Npoi插件调用解析表格的方法时,就会报错。好吧!!!!说了这么多也没有说到今天的重点,正因为有这个问题所以本人就对这个问题进行了优化,优化的方法就是使用NPOI创建工作簿,再创建工作表,再对表格进行修改样式(主要是样式做起来实在是太让人头疼了),再把数据填写到表里面这样再将数据导出来,当然这样操作就会解决之前说的问题,接着导入也会导入到系统里面,原因很简单因为我导出的是真正的表格嘛,所以也自然解析会通过,现在的问题是,用火狐浏览器导出时出现了问题,导出的文件名真是让人头大,显示的竟然是加密后的乱码,让处于兴奋状态的我立刻就nie了。算了这就是乱码浏览器不兼容的问题,顿时就觉得应该好好整顿这个浏览器市场了,不要在这么干下去了对大伙都不好,算了我说的不算。好下面就将解决代码跟大家分享一下吧,这个代码不仅解决了上述问题而且还有可能治愈精神疾病,因为它把我从崩溃的边缘拉了回来,废话不多说看真经:
string sFileName =  "XXXXXX.xls";      
if (baseContext.Request.ServerVariables["http_user_agent"].ToString().IndexOf("Firefox") != -1)
{
    sFileName = "=?UTF-8?B?" + Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(sFileName)) + "?=";        
 }
  else
 {
   sFileName = System.Web.HttpUtility.UrlEncode(sFileName, System.Text.Encoding.UTF8);
            sFileName = sFileName.Replace("+", "%20");
 }
 baseContext.Response.AddHeader("Content-Disposition", "attachment;filename=" + sFileName);
 baseContext.Response.AddHeader("Content-Length", ms.Length.ToString());
 baseContext.Response.AddHeader("Content-Transfer-Encoding", "binary");
 baseContext.Response.ContentType = "application/octet-stream;charset=utf-8";
 baseContext.Response.ContentEncoding = System.Text.Encoding.UTF8;  
 baseContext.Response.BinaryWrite(ms.ToArray());
Ps: 当代码复用时注意根据实际情况添加。或多或少的进行改进。

转载于:https://www.cnblogs.com/chaoshenzhu/p/7257445.html

你可能感兴趣的文章
Centos7.4和Ubuntu18.04安装PHP7.2
查看>>
25岁,可能是人生最尴尬的一个年龄
查看>>
dotnet core 开发无缝兼容Http和Websocket协议的接口服务
查看>>
对啊英语音标---四、双元音常见的字母发音组合有哪些
查看>>
Resource 定位、BeanDefinition 的载入和解析,BeanDefinition 注册。
查看>>
PHP模拟登录发送闪存
查看>>
com.sun.mirror的jar包
查看>>
非常详尽的 Shiro 架构解析
查看>>
负载均衡获得真实源IP的6种方法 【转】
查看>>
Windows远程协助相关汇总
查看>>
MySql(十六):MySql架构设计——MySQL Cluster
查看>>
HTML5手机页面里面如何把长按复制避免
查看>>
模拟Spring中applicationContext.xml配置文件初始化bean的过程
查看>>
Signal Shading Theory?
查看>>
[转]ASP.NET HttpModule for handling session end with StateServer
查看>>
Creating and Using Static Libraries for iPhone using Xcode 4.3
查看>>
OkHttp3几个简单的例子和在子线程更新UI线程的方法
查看>>
Flash lite for Windows Mobile?!
查看>>
(原創) DE2_NIOS_Lite 1.2 (SOC) (Nios II) (SOPC Builder) (DE2)
查看>>
【吵架不能吵半截】
查看>>