Изменение таблицы Excel с помощью .NET - PullRequest
2 голосов
/ 15 ноября 2008

Вот проблема:

Мне нужно изменить существующую таблицу Excel, используя .NET. Электронная таблица чрезвычайно сложна, и мне просто нужно добавить данные в некоторые предопределенные области.

Я изучаю свои варианты, и Excel Automation / InterOp не может быть и речи, поскольку я внедряю веб-сайт ASP.NET, и Excel, вероятно, не установлен на сервере. Из того, что я нахожу в Интернете, InterOp также является очень дорогим решением производительности.

Создание файла CSV также исключено из-за сложной природы исходной электронной таблицы.

В настоящее время я склоняюсь к решению ADO.NET OleDb, но нахожу, что упомянуто очень редко (Google и Stackoverflow.com), поэтому я немного волнуюсь: в чем прикол в OldDb для Excel? Единственный недостаток, который я могу пока найти в MSDN, это то, что я не могу создавать ячейки с формулами, но в моем случае это не проблема.

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

Тогда есть OpenXml. Это кажется слишком сложным по сравнению со OldDb, плюс еще не определено, какую из старых версий Excel я должен поддерживать.

Я что-то упустил? Есть ли еще альтернативы?

Ответы [ 8 ]

3 голосов
/ 15 ноября 2008

Проверьте MyXls .NET решение для чтения и записи двоичных файлов XLS.

1 голос
/ 16 ноября 2008

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

Если это не проще, чем альтернативы, с которыми вы сейчас сталкиваетесь, меня это удивит. Но тогда я не видел твою электронную таблицу.

1 голос
/ 15 ноября 2008

Проблема использования Excel в качестве базы данных ISAM с использованием любого драйвера (ODBC, OLEDB и т. Д.) Заключается в том, что тип данных столбца основан на первых 8 строках столбца - это чистое зло; например: если столбец является чем-то вроде части # и первые 8 частей оказываются только числовыми, то вы получите NULL для любой ячейки в этом столбце, где часть # не является числовой. (110000 против 111000-1 или 111000A). Это не зависит от того, как вы форматируете столбец в Excel (даже если вы установите столбец как текст).

Я постараюсь найти документ об этом и обновить. Вот один из них:

http://support.microsoft.com/kb/194124

http://msdn.microsoft.com/en-us/library/bb177610.aspx

1 голос
/ 15 ноября 2008

Я использовал Aspose.Cells для такого рода вещей с хорошим успехом. Документация может быть немного тупой, но продукт, кажется, работает. Вам не потребуется иметь Excel на сервере, и он работает с последними версиями Excel (и предыдущими версиями).

0 голосов
/ 15 ноября 2008

Возможно, вы захотите взглянуть на http://www.gemboxsoftware.com/GBSpreadsheetFree.htm.

У них есть бесплатная версия со всеми функциями, но не более 150 строк на листе и 5 листов на книгу, если это соответствует вашим потребностям, в противном случае платная версия начинается с 425 долларов США за 1 лицензию разработчика.

Есть дополнительные ответы, которые могут относиться к вашему вопросу на StackOverflow: Создать файл Excel (.XLS и .XLSX) из C # .

0 голосов
/ 15 ноября 2008

не уверен, что это именно то, что вам нужно, но, безусловно, может быть: 4 Редактирование в учебниках Excel (под .NET # 5-8)

0 голосов
/ 15 ноября 2008

Взгляните на Excel Web Access, который является частью Службы Excel в MOSS, серверной версии Excel, которая позволяет вычислять и отображать информацию Excel через веб-браузер. Страница обзора MOSS описывает инфраструктуру sharepoint, которая может предоставлять функции Excel на сервере. Вы можете использовать VSTO API для программного доступа к электронным таблицам.

0 голосов
/ 15 ноября 2008

У вас есть еще несколько решений. 1) Сторонний компонент для файлов Excel. (я думаю, что это самое болезненное и надежное решение) 2) Использование html-таблицы.


1) Просто посмотрите на интернет :) 2) Excel отлично работает с html-таблицами. Если вы создаете этот HTML:

<html><body>
<table>
<tr><td><b>Column A</b></td><td><b>Column B</b></td></tr>
<tr><td><font color="red">-154</b></td><td><font size="5">hello world</font></td></tr>
</table>
</body></html>

Excel покажет его в виде рабочего листа в том виде, в котором вы его отформатировали. Я думаю, что это самый универсальный способ, как создать «богатый» лист Excel в среде интернета, не устанавливая Excel на сервере.

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