【问题标题】:C# create xls or csv file and create link to download the fileC# 创建 xls 或 csv 文件并创建链接以下载文件
【发布时间】:2017-01-01 22:20:37
【问题描述】:

我现在有这种情况:

我在 SQL Server 中有一个表,以及一些网页用户定义的查询,这些查询会生成一个显示结果的结果页面。控制器功能都可以使用了。

现在我希望能够将结果下载到访问该网站的本地计算机。我还不确定将结果放入什么中。我已经搜索过了,xls 和 csv 文件看起来都非常简单。但他们只创建一个文件,然后将其保存到服务器端。

所以我的问题是:

  1. 任务是否必须通过创建临时文件来完成 ==> 将临时文件下载到客户端 ==> 删除服务器上的临时文件?

  2. 如果必须这样,我如何创建一个按钮来下载该临时文件?如果它同时服务于多个用户会发生什么?

不知道现在该做什么,如果有任何帮助,我们将不胜感激。

【问题讨论】:

    标签: c# .net excel csv download


    【解决方案1】:

    您应该根据从 Sql Server 接收到的数据创建一个 MemoryStream。使用以下代码创建一个新类。

    public abstract class FileActionResult : IHttpActionResult
        {
            private string MediaType { get; }
            private string FileName { get; }
            private Stream Data { get; }
    
            protected FileActionResult(Stream data, string fileName, string mediaType)
            {
                Data = data;
                FileName = fileName;
                MediaType = mediaType;
            }
    
            public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
            {
                Data.Position = 0;
                var response = new HttpResponseMessage
                {
                    Content = new StreamContent(Data)
                };
                response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
                response.Content.Headers.ContentType = new MediaTypeHeaderValue(MediaType);
                response.Content.Headers.ContentDisposition.FileName = FileName;
                response.Content.Headers.ContentLength = Data.Length;
    
                return Task.FromResult(response);
            }
    
        }
    
        public class ExcelFileActionResult : FileActionResult
        {
            public ExcelFileActionResult(Stream data) : base(data, "Exported.xls", "application/vnd.ms-excel")
            {
            }
        }
    

    从控制器调用代码。

       return new ExcelFileActionResult(stream);
    

    stream 是内存流。

    【讨论】:

      猜你喜欢
      • 2020-06-27
      • 1970-01-01
      • 2011-11-22
      • 2016-12-06
      • 1970-01-01
      • 1970-01-01
      • 2012-01-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多