Denis Gladkikh
Russian   |  English

Выбранный тег: Excel

Экспорт в Excel из Silverlight/WPF DataGrid

Экспорт табличной части в Excel из приложения достаточно распространенная задача, и решать ее можно по разному. Конечно решение зависит от того, что за приложение вы разрабатываете. Если это приложение разрабатываемое для автоматизации бизнес процессов, и оно предназначено для установки в несколько контор, то скорее всего вы можете диктовать условия (рекомендации по использованию), необходимые для вашего приложения. Либо заказчик выставит требования, под которые вы будете его разрабатывать. В этом случае, экспорт проще всего реализовывать через COM, используя инфраструктуру Excel (либо OpenOffice), тогда и реализовать данную задачу при помощи данного подхода будет просто, и это даст вам наибольшую гибкость и возможность использовать всю мощь таблиц Excel. Об этом вариант и пойдет разговор ниже. Другой вариант – ваше приложение предназначено для домашних пользователей, в этом случае диктовать обязательную установку MS Office или OpenOffice не очень хорошо, потому лучше не завязываться на них, а использовать либо сторонние компоненты для создания документов, либо экспортировать в xml/html формат, который понимает MS Office (так делает, например, JIRA). Правда в этом случае будет тяжело удовлетворить просьбы клиентов, вроде: сделать так, чтобы экспортируемый документ был подготовлен для печати в альбомном виде с необходимыми полями, хотя может быть и возможно.



Когда нужно прочитать данные из Excel файла

Вариантов работы с Excel файлами куча. Я сейчас говорю не о Open XML формате (2007 офис, формат xlsx), а о формате xls 2003/XP/2000 офисы.

Один из вариантов, это System.Runtime.InteropServices.Marshal.GetActiveObject, можно почитать, к примеру тут: Автоматизация запущенного экземпляра приложения Office с помощью Visual C# .NET.

Но идея в том, чтобы читать xls файлы, не устанавливая самого офиса. Для это есть замечательная библиотека Excel Reader, используем которую уже давно в нескольких проектах (лицензия GNU).