Чтение файла Excel - PullRequest
       1

Чтение файла Excel

0 голосов
/ 16 января 2012

Что такое хороший способ чтения файлов Excel в C #? У Point есть веб-страница, с которой пользователь может загрузить файл Excel, который затем будет прочитан и отправлен в таблицу базы данных.

Способ OleDB здесь бесполезен, насколько я знаю, он может читать, используя один файл, а здесь будет много.

Лучший способ, который я нашел на данный момент, это:

http://www.codeproject.com/KB/office/csharp_excel.aspx

Есть ли другие лучшие / новые методы?

Спасибо.

Ответы [ 6 ]

2 голосов
/ 16 января 2012

Используя OLEDB, вы можете получить доступ к нескольким файлам, создав строку подключения на основе имени файла, который вы хотите открыть.Должно работать что-то вроде следующего:

Для XLSX:

var connString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES\";", fileName);

Для XLS:

var connString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";", fileName);

Где fileName указывает файл, который вы хотите открыть.

1 голос
/ 16 января 2012

Провайдер oledb будет работать, хотя есть некоторые ошибки.Существует ограничение столбца, если вы не используете 64-битную версию драйвера.Если вы работаете с 64-битной версией, у вас не может быть никаких 32-битных офисных продуктов в системе.

Я бы порекомендовал установить в реестре HKLM \ Software \ Wow5432Node \ Microsoft \ Jet \ 4.0 \ Engines \ ExcelУстановите значение TypeGuessRows равным нулю. Это заставит драйвер сканировать все строки, чтобы определить тип.Драйвер немного сомнителен в том, что если первое, скажем, число X строк в столбце содержит числа, а затем - строки, тип можно считать числовым, и все, что содержит строку, исчезнет и станет нулевым.Например.

zipcode
--------
39934

18883

28472

52256-1252

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

Таким образом, вы МОЖЕТЕ использовать oledb, только несколько обходных путей для рассмотрения.

0 голосов
/ 16 января 2012

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

Обратите внимание, что в настоящее время он не обрабатывает файлы XLSX.

0 голосов
/ 16 января 2012

Я использовал Excel Data Reader , который работал очень хорошо. По общему признанию это было с настольным приложением, но оно должно работать так же хорошо в приложении ASP.net.

0 голосов
/ 16 января 2012

У меня недавно был хороший успех с Linq To Excel. В зависимости от ваших точных требований, это может быть хорошим вариантом

http://code.google.com/p/linqtoexcel/

0 голосов
/ 16 января 2012

Существует несколько опций

  1. Использование Excel Interop , необходимо установить Excel и вам нужно иметь дело с COM
  2. Для файлов XLSX вы можете использовать Open Office SDK или сторонние библиотеки, такие как Epplus
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...