牢骚:今天又是一个不太平的日子,打开任务表一看里面有一堆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: 当代码复用时注意根据实际情况添加。或多或少的进行改进。

火狐浏览器导出EXCEL 表格,文件名乱码问题的更多相关文章

  1. 平板电脑与火狐浏览器下载excel中文文件名乱码

    fileName = new String(fileName.getBytes("utf-8"), "iso8859-1");//兼容火狐.ie.平板 resp ...

  2. 原生JavaScript 导出excel表格(兼容ie和其他主流浏览器)

    因同事的需求是想前端导出excel表格,网上找了一些demo,自己修改了一下,可能以后会用到,记录下来吧,兼容ie和一些主流浏览器,ie可能会报错,原因参考 这里,edge 浏览器还没有办法导出,正在 ...

  3. PHP导入导出excel表格图片(转)

    写excel的时候,我用过pear的库,也用过pack压包的头,同样那些利用smarty等作的简单替换xml的也用过,csv的就更不用谈了.呵呵.(COM方式不讲了,这种可读的太多了,我也写过利用wp ...

  4. php header函数导出excel表格

    推荐一个除了用PHPExcel导出表格之外的另外一种比较简单不需要引入类文件的表格导入方法——header()导出excel表格. 导出表格的步骤封装成了方法,以便于重复使用,代码如下: /** * ...

  5. PHP导入导出excel表格图片的代码和方法大全

    基本上导出的文件分为两种: 1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已.修改这种文件后再保存,通常会提示你是否要转换成Excel文件 ...

  6. Vue中导出Excel表格方法

    本文记录一下在Vue中实现导出Excel表格的做法.参考度娘上各篇博客,最后实现功能 Excel表格,我的后端返回的是数据流,然后文件名是放进了content-disposition中,前端进行获取. ...

  7. 360浏览器导出Excel闪退BUG

    最近这半个月在疯狂的修改各种BUG,所以比较少更新博客. 现在谈谈这个360浏览器导出Excel的BUG的解决方法. 该BUG常出现在win7系统与xp系统导出Excel的瞬间关闭导出弹窗. 目前互联 ...

  8. java导出excel表格

    java导出excel表格: 1.导入jar包 <dependency> <groupId>org.apache.poi</groupId> <artifac ...

  9. Spring Boot 导出Excel表格

    Spring Boot 导出Excel表格 添加支持 <!--添加导入/出表格依赖--> <dependency> <groupId>org.apache.poi& ...

随机推荐

  1. 手机文件夹的emulated什么意思

    词典翻译是仿真,就是自带的存储卡, 手机的储存方式有两种,一种是手机内存 ,一种是SD卡内存.

  2. Sonar 常用代码规则整理(二)

    摘要:公司部署了一套sonar,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分析,避免再次出现类似问题. 作者原创技术文章,转载请注明出处 ============ ...

  3. DevExtreme 学习应用[3]

    DevExtreme dxSelectBox 联动查询案例 //数据获取 lookupDataSource = new DevExpress.data.DataSource({ store: stor ...

  4. web前端性能优化问题

    常用的几大优化解决: 页面内容的优化 减少http请求 途径: 1>启用http/2--越来越多的浏览器都开始支持 HTTP/2.HTTP/2 为同一服务器的并发连接问题带来了很多好处.换句话说 ...

  5. 洛谷 [P1314] 聪明的质检员(NOIP2011 D2T2)

    ###一道二分答案加前缀和### 题目中已经暗示的很明显了 "尽可能靠近" " 最小值" 本题的主要坑点在于 long long 的使用 ##abs函数不支持l ...

  6. Codeforces 250 E. The Child and Binary Tree [多项式开根 生成函数]

    CF Round250 E. The Child and Binary Tree 题意:n种权值集合C, 求点权值和为1...m的二叉树的个数, 形态不同的二叉树不同. 也就是说:不带标号,孩子有序 ...

  7. [Miller-Rabin & Pollard-rho]【学习笔记】

    Miller-Rabin & Pollard-rho 很久之前就学过了...今天重学一遍 利用费马小定理,但不能判断伪素数的情况 基于a的伪素数n: \(a^{n-1} \equiv 1 \p ...

  8. BZOJ 1202: [HNOI2005]狡猾的商人 [带权并查集]

    题意: 给出m个区间和,询问是否有区间和和之前给出的矛盾 NOIp之前做过hdu3038..... 带权并查集维护到根的权值和,向左合并 #include <iostream> #incl ...

  9. 夏令营讲课内容整理 Day 2.

    本日主要内容是并查集和堆. 并查集 并查集是一种树型的数据结构,通常用来处理不同集合间的元素之间的合并与查找问题.一个并查集支持三个基本功能:合并.查找和判断.举一个通俗的例子,我和lhz认识,lhz ...

  10. market1501的学习,跟着苏同学的博客学习

    先看看官方文档:然后附上苏的博客链接http://bigbrothersue.com/index.php/2017/12/20/person-re-id/ The Market-1501 datase ...