Я собираюсь добавить раздел в приложение ASP.NET (выделенный код VB.NET), который позволит пользователю получать данные, возвращаемые им в виде файла Excel, который я буду генерировать на основе данных базы данных. Хотя есть несколько способов сделать это, у каждого есть свои недостатки. Как бы вы вернули данные? Я ищу что-то максимально простое и понятное.
asp.net
vb.net
export-to-excel
Дэн Коутс
источник
источник
Ответы:
CSV
Плюсы:
Минусы:
HTML
Плюсы:
Минусы:
OpenXML (Office 2007 .XLSX)
Плюсы:
Минусы:
SpreadSheetML (открытый формат XML)
Плюсы:
Минусы:
XLS (создается сторонним компонентом)
Плюсы:
Минусы:
COM-взаимодействие
Плюсы:
Минусы:
источник
Вы можете вывести данные в виде ячеек таблицы html, наклеить на них расширение
.xls
или.xlsx
расширение, и Excel откроет его, как если бы это был собственный документ. Таким образом вы даже можете выполнять ограниченное форматирование и вычисления формул, поэтому он намного мощнее, чем CSV. Кроме того, вывод таблицы html должен быть довольно простым для выполнения с веб-платформы, такой как ASP.Net;)Если вам нужно несколько листов или именованных листов в вашей книге Excel, вы можете сделать что-то подобное с помощью XML-схемы с именем
SpreadSheetML
. Это не новый формат, поставляемый с Office 2007, это нечто совершенно иное, работающее еще в Excel 2000. Самый простой способ объяснить, как он работает, - это на примере:источник
Если исходить из DataTable :
Из Gridview :
источник
Это бесплатная оболочка для SpreadML - она отлично работает.
http://www.carlosag.net/Tools/ExcelXmlWriter/
источник
На основании полученных ответов и консультаций с коллегами выяснилось, что лучшим решением является создание либо XML-файла, либо HTML-таблиц и их вложения в качестве вложения. Одно изменение, рекомендованное моими коллегами, заключается в том, что данные (т.е. таблицы HTML) можно записывать непосредственно в объект Response, что устраняет необходимость записывать файл, что может быть проблематичным из-за проблем с разрешениями, ввода-вывода конкуренция и обеспечение запланированной очистки.
Вот фрагмент кода ... Я еще не проверял это, и я не предоставил весь вызываемый код, но я думаю, что он хорошо отражает идею.
источник
поскольку Excel понимает HTML, вы можете просто записать данные в виде таблицы HTML во временный файл с расширением .xls, получить FileInfo для файла и отправить его обратно, используя
если вы хотите избежать временного файла, вы можете записать в поток в памяти и записать байты обратно вместо использования WriteFile
если заголовок длины содержимого опущен, вы можете просто записать html обратно напрямую, но это может работать неправильно во всех браузерах.
источник
Лично я предпочитаю метод XML. Я возвращаю данные из базы данных в Dataset, сохраняю их в XMl, затем создаю файл xslt, содержащий правило преобразования, которое отформатирует правильный документ, и простое преобразование XML завершит работу. Лучшая часть этого заключается в том, что вы можете форматировать ячейки, выполнять условное форматирование, настраивать верхние и нижние колонтитулы и даже устанавливать диапазоны печати.
источник
Я делал это пару раз, и каждый раз самым простым способом было просто вернуть файл CSV (значения, разделенные запятыми). Excel импортирует его идеально, и это относительно быстро.
источник
мы экспортируем данные из datagrid, чтобы всегда отличаться. Преобразование в HTML и запись в файл Excel
Единственная проблема с этим методом заключалась в том, что во многих наших сетках были кнопки или ссылки, поэтому вам тоже нужно это:
Я обнаружил, что где-то это хорошо работает.
источник
Я рекомендую бесплатную библиотеку для генерации Excel с открытым исходным кодом, основанную на OpenXML.
Мне помогло несколько месяцев назад.
источник
Вот отчет, полученный из хранимой процедуры. Результаты экспортируются в Excel. Он использует ADO вместо ADO.NET, и причина, по которой эта строка
Он выполняет большую часть работы и недоступен в ado.net.
источник
Если вы заполняете GridView данными, вы можете использовать эту функцию для получения данных в формате HTML, но указав браузеру, что это файл Excel.
источник
Просто избегайте COM-взаимодействия через пространство имен Microsoft.Office.Interop. Он чертовски медленный, ненадежный и масштабируемый. Не применимо к мазохистам.
источник
С помощью этой библиотеки вы можете довольно легко создавать красиво отформатированные файлы Excel: http://officehelper.codeplex.com/documentation .
Microsoft Office не нужно устанавливать на веб-сервере!
источник
CSV - самый простой способ. В большинстве случаев он связан с Excel. В противном случае вам придется использовать API автоматизации или формат XML. API и XML не так уж и сложны в использовании.
Информация о создании XML для Excel
источник
Я либо использую CSV-путь (как описано выше), либо в наши дни чаще использую Infragistics NetAdvantage для создания файла. (В подавляющем большинстве случаев, когда используется Infragistics, мы просто экспортируем существующий UltraWebGrid, который, по сути, является решением с одним LOC, если не требуются дополнительные настройки форматирования. Мы также можем вручную сгенерировать файл Excel / BIFF, но в этом редко бывает необходимость.)
источник
человек, в .net, я думаю, у вас мог бы быть компонент, который мог бы это сделать, но в классическом asp я уже сделал это, создав таблицу html и изменив mime-тип страницы на vnd / msexcel. Я предполагаю, что если вы используете gridview и измените тип mime, возможно, он должен работать, потому что gridview - это таблица html.
источник
Единственный надежный способ избежать появления зеленых треугольников «Похоже, что эти числа хранятся в виде текста» - это использовать формат Open XML. Его стоит использовать, лишь бы избежать неизбежных зеленых треугольников.
источник
Лучший метод, который я видел для отчетов Excel, - это записывать данные в XML с расширением XML и передавать их клиентам с правильным типом содержимого. (приложение / xls)
Это работает для любого отчета, который требует базового форматирования, и позволяет сравнивать с существующими электронными таблицами с помощью инструментов сравнения текста.
источник
Предполагая, что это для интрасети, где вы можете установить разрешения и поручить IE, вы можете создать клиентскую часть книги с JScript / VBScript, управляя Excel . Это дает вам собственное форматирование Excel, без хлопот по автоматизации Excel на сервере.
Я не уверен, что действительно рекомендовал бы этот подход, за исключением довольно нишевых сценариев, но он был довольно распространен в период расцвета классических ASP.
источник
Конечно, вы всегда можете использовать сторонние компоненты. Лично у меня был хороший опыт работы со Spire.XLS http://www.e-iceblue.com/xls/xlsintro.htm
Компонент довольно прост в использовании в вашем приложении:
источник
Одна из проблем, с которыми я столкнулся, используя одно из предложенных выше решений, похожих на этот ответ заключается в том, что если вы вытолкнете контент в виде вложения (что я считаю самым чистым решением для браузеров, отличных от ms) , затем откройте его в Excel 2000-2003, его тип - «Веб-страница Excel», а не собственный документ Excel.
Затем вы должны объяснить пользователям, как использовать «Сохранить как тип» в Excel, чтобы преобразовать его в документ Excel. Это неприятно, если пользователям нужно отредактировать этот документ, а затем повторно загрузить его на ваш сайт.
Я рекомендую использовать CSV. Это просто, и если пользователи открывают его из Excel, Excel, по крайней мере, предлагает им сохранить его в собственном формате.
источник
Я бы просто создал CSV-файл на основе данных, потому что я считаю его самым чистым, и Excel хорошо его поддерживает. Но если вам нужен более гибкий формат, я уверен, что есть некоторые сторонние инструменты для создания настоящих файлов Excel.
источник
Вот решение, которое передает данные в виде CSV. Быстро, чисто и просто, он обрабатывает запятые при вводе.
источник
только что создал функцию для экспорта из веб-формы C #, чтобы преуспеть, надеюсь, что это поможет другим
источник
Если вам нужно использовать Excel вместо файла CSV, вам нужно будет использовать автоматизацию OLE на экземпляре Excel на сервере. Самый простой способ сделать это - создать файл шаблона и программно заполнить его данными. Вы сохраняете его в другом файле.
Подсказки:
Некоторые из подходов «использовать mime-типы, чтобы обмануть excel для открытия таблицы HTML» подействовали бы, если вы не возражаете против того, чтобы формат файла был немного базовым. Эти подходы также перекладывают тяжелую работу процессора на клиента. Если вам нужен точный контроль над форматом электронной таблицы, вам, вероятно, придется использовать сам Excel для создания файла, как описано выше.
источник