2013-03-15 1 views
2

System.Text.Encoding.ASCII.GetString(ms.ToArray));을 사용하여 memorystream에 예상 데이터가 있음을 확인했습니다.LinqToCSV를 사용하여 MemoryStream에 CSV를 쓰는 중 데이터가 반환되지 않습니다.

그러나 LinqToCSV 너겟 라이브러리를 사용하면 내 CSV 파일이 생성되지 않습니다. 오류나 예외가 발생하지 않습니다. 파일을 열 것인지 묻는 메시지가 나타나면 빈 파일이 나타납니다. 여기

내가 contentResult에 반환 형식을 변경하는 경우, 그것은 흥미 및 내용에 복귀 방법()와 I가 브라우저 창을 보여주는 어떻게해야합니까 System.Text.Encoding.ASCII.GetString(ms.ToArray));를 전달할

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"); 
    } 

내 작업 방법 내 데이터.

답변

4

스트림 위치를 0으로 재설정했는지 확인하십시오. 또한 그 전에 StreamWriter을 플러시해야합니다.

4

JavaScript에서 CVS 파일을 반환하는 웹 API 메서드 호출. 에서

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; 
       } 
      }   
관련 문제