Сборка файлов Excel с C # - PullRequest
       63

Сборка файлов Excel с C #

7 голосов
/ 10 ноября 2009

Мне нужно создать файл Excel через C #. Я прочитал несколько мест, где создание документа XML - самый простой способ сделать это? Мне нужно иметь несколько именованных вкладок и иметь возможность указать, что конкретные ячейки - это текст, дата, время, число и т. Д. ... Есть предложения или хорошие примеры?

Ответы [ 7 ]

7 голосов
/ 10 ноября 2009

Вам необходим System.IO.Packaging API - это позволит вам создавать документы .xlsx, как описано в Вставка значений в ячейки Excel 2007 . Формат Excel 2007 также может использоваться в Excel 2003 и XP с установленным бесплатным пакетом обеспечения совместимости Microsoft Office .

2 голосов
/ 21 августа 2012

Это очень сложно сделать, так как рекомендованный Microsoft механизм предполагает использование Office, который отлично подходит для настольных компьютеров, но бесполезен для Интернета.

Бинарный формат .xls файлов является правильным, поэтому Microsoft представила .xlsx OpenXML-файлы в Office 2007.

.xslx предположительно прост - это просто zip-контейнер, полный XML-файлов. Вы можете открыть его с помощью System.IO.Packaging и отредактировать с помощью System.Xml. Есть даже пакет совместимости для более старых версий офиса.

К сожалению, это просто не просто - формат .xslx - это ужасный за пределами слов .

Похоже, что они взяли 16-битный оптимизированный двоичный формат .xls (изначально разработанный для Windows 3.1) и сериализовали его в XML вместо двоичного. Затем они добавили действительно глупые изменения, например, комментарии к ячейкам на самом деле VML - формат, предположительно отброшенный в IE5! Они также добавили тонну магических чисел и метаданных в XML, так что вы не можете использовать какие-либо преобразования для него, поэтому вы анализируете эту присоску вручную.

Наконец, они сделали полный осел для отладки, и мы регулярно находим .xslx файлы, которые пакет совместимости сообщает как поврежденные (без указания причины), но последняя версия Office может нормально открыться.

Существует действительно хорошая библиотека с открытым исходным кодом: SpreadsheetLight . Это очень хорошая библиотека, но все, что требует от вас копать и расширять файлы .xslx, будет болезненным.

2 голосов
/ 10 ноября 2009

Взгляните на НКОИ:

http://www.codeplex.com/npoi

Это также было довольно хорошо освещено в других местах на SO:

https://stackoverflow.com/search?q=create+excel+.net

1 голос
/ 10 ноября 2009
0 голосов
/ 22 марта 2011

Visual Studio Tools для Office - хороший способ сделать это

http://msdn.microsoft.com/en-us/vsto/dd162436.aspx

http://msdn.microsoft.com/en-us/vsto/default

0 голосов
/ 22 марта 2011

http://epplus.codeplex.com/ - Посмотрите на этот проект, он мне очень помог. Я нашел эту ссылку по адресу: https://stackoverflow.com/questions/170652/whats-the-best-net-library-for-parsing-and-generating-excel-spreadsheets

0 голосов
/ 17 ноября 2009

Мы используем комплект под названием Aspose на работе. Он имеет большой полнофункциональный компонент «Ячейки», который творит чудеса для нас.

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