2016-03-18 6 views
0

Я рассматриваю различные методы экспорта данных в Excel в моем приложении MVC.Экспорт данных в Excel в приложении MVC

  1. Множество библиотек требуют, чтобы данные хранились в DataTables.

  2. У меня есть данные, переданные в модель для доступа из представления. Кажется, что вы не можете передать эту модель обратно контроллеру.

  3. JavaScript является опцией, если он не экспортируется в виде таблицы html, а является чистым файлом Excel.

В настоящее время я звоню функцию, которая будет выполняться запросы снова, чтобы построить строку и использовать System.IO.File.WriteAllText, выводящий файл. Я не предпочитаю этот способ, так как мне нужно вызвать базу данных для повторного запуска запросов (у меня уже есть все данные, которые мне нужны в модели в представлении), и путь жестко запрограммирован, мне бы хотелось, чтобы диалог сохранения отображался вверх.

Есть ли лучший способ сделать это?

Я бы очень хотел, один из двух способов ниже:

  1. Найти «трюк», чтобы передать данные с точки зрения обратно к контроллеру, может быть TempData может быть использован в представлении как-то?
  2. JavaScript, который будет производить чистый Excel (.xlsx) файл

    List<type> record = GetRecords(); 
    
    StringBuilder sb = new StringBuilder(); 
    
    sb.AppendLine("Data 1, Data 2, Data 3, Data 4"); 
    
    foreach (var item in record) 
    { 
        sb.AppendFormat("{0},{1},{2},{3},{4}\n", item.1, item.2, item.3, item.4); 
    } 
    
    System.IO.File.WriteAllText("myfile.csv", sb.ToString()); 
    
+0

js-xlsx (https://github.com/SheetJS/js-xlsx) - это библиотека javascript, которая может создавать чистый файл xlsx. Это поможет вам? – wwv

+0

Я закончил тем, что пошел ниже. Спасибо – Unrecognized

ответ

1

Вы можете использовать библиотеку как EPPlus. Файлы Excel могут быть полностью созданы в XML. Формат - OpenXML. Само по себе это не очень весело работать, но эта библиотека делает ее управляемой. Вы можете построить XML-файл по требованию, а затем передать его в ответ, поэтому с точки зрения пользователя они загружают файл Excel. На связанной странице показано, как начать с источника данных (в данном случае DataTable), создать электронную таблицу и добавить ее в HttpResponse. Вы можете создавать рабочие листы с формулами и даже книгами с несколькими рабочими листами.

+0

Если вы хотите отредактировать эти данные в Excel и продолжить его отправку на сервер, это то, что вам нужно для управления в Excel. Это будет нелегко. Вам понадобится выполнить код в электронной таблице, который будет отправляться обратно на сервер, когда будут сделаны изменения. Вы не хотите, чтобы сервер отвечал больше Excel, потому что тогда у вас будет вся новая электронная таблица для загрузки каждый раз. Вы могли бы заставить их редактировать электронную таблицу и опубликовать весь файл, а затем проанализировать его. Но я думаю, что было бы проще просто сделать это в браузере. –

Смежные вопросы