Стратегия экспорта в Excel с форматированием из ASP.NET?

Так что это еще один вопрос экспорта в Excel.

У меня есть страница с таблицей форматирования по таблице стилей. Когда я экспортирую страницу, задав ContentType для application/excel и Content-Disposition для вложения, я могу экспортировать таблицу в Excel (не CSV). Тем не менее, он теряет все форматирование. Я думаю, это потому, что Excel не загружает CSS, и я думаю, это разумно.

Итак, в сценарии, где мне нужно показать таблицу в Интернете, а также экспортировать в Excel, оба с похожим (даже если не точным) форматированием, что будет лучшим подходом без использования чего-то вроде NPOI?

Я пытаюсь свести к минимуму работу и сохранить единый шаблон, если это возможно. Нужно ли мне создавать два отдельных шаблона: один со таблицей стилей, другой со встроенным стилем в самой таблице для Excel?

Наличие одного шаблона с условным форматированием внутри было бы очень грязно.

Есть идеи?

3 ответа

Если вы еще не решили проблему, я рекомендую вам использовать Open XML SDK 2.0 для Microsoft Office (см. http://www.microsoft.com/downloads/details.aspx?FamilyID=c6e744e5-36e9-45f5-8d8c-331df206e0d0&displaylang=en). Таким образом, вы сможете создать файл XLSX без установки Excel на сервер. XLSX-файл - это сжатая (как ZIP-файл) коллекция XML-файлов. Open XML SDK 2.0 помогает вам создавать и изменять XLSX-файлы как чистые XML-файлы. В первый раз, если вы посмотрите на Open XML SDK, многие вещи выглядят странно, но это только в начале. Существует так называемый "Инструмент повышения производительности Open XML SDK 2.0" (часть Open XML SDK 2.0), который может сгенерировать для вас много полезного кода. Кроме того, вы можете создать красивый документ Excel, который вы можете использовать в качестве прототипа (шаблона) документа, который вы создадите. Таким образом, вы можете решить проблему сложного форматирования без написания большого количества кода.

Посмотрите на http://msdn.microsoft.com/en-us/library/cc850837(v=office.14).aspx несколько примеров и на http://openxmldeveloper.org/default.aspx. См. Также Создание документа Excel с OpenXml SDK 2.0 в качестве начального примера. На http://www.codeplex.com/ вы также можете найти много полезных материалов об Open XML SDK.

Есть несколько подходов, которые вы могли бы создать на своем сервере с помощью VSTO объекта Excel, а затем записать документ в память и записать в ответ исходный файл, но этот подход может быть немного дорогим, если вы создаете объект Excel для каждого запроса, поэтому может попытаться сделать одноэлементный объект, который оборачивает экземпляр объекта Excel

Вы можете создать отчет (файл rdlc), похожий на сетку. Затем вы можете выполнить действие, в котором вы создадите экземпляр LocalReport, передадите ему нужные данные и вызовете его метод Render. Затем вы возвращаете байтовый массив, возвращенный методом Render.

Другие вопросы по тегам