Распечатать массив / список, чтобы преуспеть в C # - PullRequest
2 голосов
/ 11 января 2012

Я могу сохранить одно значение в Excel, но мне нужна помощь для сохранения полного списка / массива в листе Excel.

Код, который у меня есть:

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 ]

4 голосов
/ 11 января 2012

Вы можете использовать FileHelpers для сериализации строго типизированного объекта в CSV.Просто пообещай мне никогда не бросать свой собственный анализатор CSV .

2 голосов
/ 11 января 2012

Если вы хотите создать файл .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");

Редактировать

Вы можете добавить больше столбцов и получить более изящные результаты, но затем вы столкнетесь с проблемой проверки специальных символов, которые нужно экранировать (например, , и "). Если вы хотите сделать больше, чем просто вывод, я предлагаю вам следовать предложению @Darins и использовать утилиты FileHelpers. Если вы не можете или не хотите их использовать, тогда эта статья имеет реализацию csv writer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...