首页 新闻 会员 周边

HTTP导出Excel问题

0
[已解决问题] 解决于 2018-08-28 11:41

文件能导出来,但是导出的Excel文件再次导入的时候就报错
 
 
 
下面是导出方法的代码


 private void WriteFile(string str_fileName, Stream stream)
        {
            HttpContext.Current.Response.Clear();
            HttpRequest _Request = HttpContext.Current.Request;
            HttpResponse _Response = HttpContext.Current.Response;
            BinaryReader br = new BinaryReader(stream);
            _Response.AddHeader("Accept-Ranges", "bytes");
            _Response.Buffer = false;
            long fileLength = stream.Length;
            long startBytes = 0;

            int pack = 10240; //10K bytes
            //int sleep = 200; //每秒5次 即5*10K bytes每秒
            int sleep = (int)Math.Floor(Convert.ToDouble(1000 * pack / 1024000)) + 1;
            if (_Request.Headers["Range"] != null)
            {
                _Response.StatusCode = 206;
                string[] range = _Request.Headers["Range"].Split(new char[] { '=', '-' });
                startBytes = Convert.ToInt64(range[1]);
            }
            _Response.AddHeader("Content-Length", (fileLength - startBytes).ToString());
            if (startBytes != 0)
            {
                _Response.AddHeader("Content-Range", string.Format(" bytes {0}-{1}/{2}", startBytes, fileLength - 1, fileLength));
            }
            _Response.AddHeader("Connection", "Keep-Alive");
            _Response.ContentType = "application/vnd.ms-excel";
            _Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(str_fileName, System.Text.Encoding.UTF8));

            br.BaseStream.Seek(startBytes, SeekOrigin.Begin);
            int maxCount = (int)Math.Floor(Convert.ToDouble((fileLength - startBytes) / pack)) + 1;
            for (int i = 0; i < maxCount; i++)
            {
                if (_Response.IsClientConnected)
                {
                    _Response.BinaryWrite(br.ReadBytes(pack));
                    Thread.Sleep(sleep);
                }
                else
                {
                    i = maxCount;
                }
            }
        }

 

心判世界的主页 心判世界 | 初学一级 | 园豆:59
提问于:2018-08-22 16:26
< >
分享
最佳答案
0

好吧,换了一种公司框架已经封装好了的导出方法就可以了

心判世界 | 初学一级 |园豆:59 | 2018-08-28 11:39

好像是使用的HSSFWorkbook

心判世界 | 园豆:59 (初学一级) | 2018-08-28 11:46
其他回答(3)
0

不说用什么技术,没有代码,不说怎么实现的导出,emmmmmmmmm。。。

顾晓北 | 园豆:10844 (专家六级) | 2018-08-22 16:39

第一次提问有点小紧张,代码已附上

支持(0) 反对(0) 心判世界 | 园豆:59 (初学一级) | 2018-08-22 16:51

@心判世界: 你的stream怎么来的?

支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2018-08-22 17:31

@顾晓北: 就是一个datatable遍历拼接成html字符串再转换成流

支持(0) 反对(0) 心判世界 | 园豆:59 (初学一级) | 2018-08-22 17:39

@心判世界: 那就跟提示一样了,这种Excel你自己看还行,不是标准的Excel,标准的ms Excel会有一些其他的信息。。。

支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2018-08-22 17:51
0

建议使用插件,aspose

Melody.Gkx | 园豆:196 (初学一级) | 2018-08-23 10:42
0

Spire.XLS导入导出Excel比较简单:http://e-iceblue.cn/spirexls/import-or-export-data.html

ms_doudou | 园豆:1166 (小虾三级) | 2018-08-23 14:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册