【问题标题】:Writing CSV to MemoryStream using LinqToCSV does not return any data使用 LinqToCSV 将 CSV 写入 MemoryStream 不会返回任何数据
【发布时间】:2013-03-15 15:36:35
【问题描述】:

我已使用 System.Text.Encoding.ASCII.GetString(ms.ToArray)); 验证我的内存流具有预期的数据。

但是,使用 LinqToCSV nuget 库不会生成我的 csv 文件。我没有抛出任何错误或异常。当系统提示我打开文件时,我只是得到一个空文件。

这是我的操作方法

 public FileStreamResult  Export(){

        var results = _service.GetProperties().Take(3);
        System.IO.MemoryStream ms = new System.IO.MemoryStream();
        System.IO.TextWriter  txt = new System.IO.StreamWriter(ms); 


        CsvFileDescription inputFileDescription = new CsvFileDescription{
            SeparatorChar =',',
            FirstLineHasColumnNames = true
        }
            ; 

        CsvContext csv = new CsvContext();

        csv.Write(results,txt,inputFileDescription);



        return File(ms , "application/x-excel"); 
    }

我觉得很有趣,如果我将返回类型更改为 contentResult,并将返回方法更改为 Content() 并将其传递给 System.Text.Encoding.ASCII.GetString(ms.ToArray));,我确实会看到一个显示我的数据的浏览器窗口。

【问题讨论】:

    标签: linq asp.net-mvc-4 memorystream


    【解决方案1】:

    确保将流位置重置为 0。同时确保在此之前刷新 StreamWriter

    【讨论】:

      【解决方案2】:

      调用 Web API 方法从 JavaScript 返回 CVS 文件。

      public HttpResponseMessage Bidreport([FromBody]int formData).....
      

      填写您的IEnumerable<YourObject>query = 来自 LINQ 查询 …… 这是如何返回它:

       using (var ms = new MemoryStream())
                  {
                      using (TextWriter txt = new StreamWriter(ms))
                      {
                          var cc = new CsvContext();
                          cc.Write(query, txt, outputFileDescription);
                          txt.Flush();
                          ms.Position = 0;
                          var fileData = Encoding.ASCII.GetString(ms.ToArray());
                          var result = new HttpResponseMessage(HttpStatusCode.OK) {Content = new StringContent(fileData)};
                          result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-excel");
                          return result;
                      }
                  }         
      

      【讨论】:

        猜你喜欢
        • 2011-08-04
        • 1970-01-01
        • 2010-11-15
        • 2021-03-09
        • 1970-01-01
        • 2023-01-11
        • 2012-07-17
        • 2021-06-29
        • 2022-11-24
        相关资源
        最近更新 更多