2012-01-10 32 views
2

我能夠將單個值保存到excel中,但我需要幫助將完整的列表/數組保存到Excel表格中。在c中打印一個數組/列表來優化#

代碼我到目前爲止有:

var MovieNames = session.Query<Movie>() 
          .ToArray(); 

List<string> MovieList = new List<string>(); 

foreach (var movie in MovieNames) 
{     
    MovieList.Add(movie.MovieName);    
} 

//If I want to print a single value or a string, 
//I can use the following to print/save to excel 
// How can I do this if I want to print that entire 
//list thats generated in "MovieList" 

return File(new System.Text.UTF8Encoding().GetBytes(MovieList), "text/csv", "demo.csv"); 

回答

2

如果你的意思是你想在一列創建.csv文件與所有影片的名稱,以便您可以在Excel中打開它,然後簡單地遍歷它:

byte[] content; 

using (var ms = new MemoryStream()) 
{ 
    using (var writer = new StreamWriter(ms)) 
    { 
     foreach (var movieName in MovieList) 
      writer.WriteLine(movieName); 
    } 

    content = ms.ToArray(); 
} 

return File(content, "text/csv", "demo.csv"); 

編輯

您可以添加更多的列,並與您的輸出票友,但那麼你碰上了您需要檢查需要轉義的特殊字符(如,")。如果你想做的不僅僅是一個簡單的輸出,那麼我建議你遵循@達林建議,並使用FileHelpers實用程序。如果你不能或不想使用它們,那麼this article就有一個csv編寫器的實現。

+0

我得到一個例外 - 「無法訪問已關閉的流」 – ZVenue 2012-01-11 18:04:12

+0

@ZVenue對不起,我忘了,'被佈置在StreamWriter'關閉底層流。我更正了代碼。 – ChrisWue 2012-01-11 18:28:47

+0

謝謝你..這工作。有沒有辦法,我可以使用這種方法格式化輸出?喜歡有多個值輸出和有標籤等.. – ZVenue 2012-01-11 18:40:04

4

你可以使用FileHelpers連載一些強類型的對象爲CSV。只要答應我給never roll your own CSV parser

+0

+1爲非常有趣的東西鏈接(「在你耳邊響起的是傑米Zawinski說:」有些人,當遇到問題時,想'我知道,我會用正則表達式。'現在他們有兩個問題。「) – 2012-01-10 22:57:11

+0

@TimSchmelter,是的,這是真的。 – 2012-01-10 22:58:45

+0

@DarinDimitrov說實話我從來沒有見過任何人試圖解析csv與定期表達式。 – ChrisWue 2012-01-11 18:57:31