2011-02-10 2 views
4

Я только начинаю проект, где моя система (написанная в .NET MVC) должна будет читать данные Excel из указанного файла и импортировать в базу данных (SQL Server 2008).Импорт данных Excel в базу данных

Библиотека NPOI уже развернута в системе, которая работает очень хорошо, однако мне было довольно сложно найти пример кода в Интернете для сбора данных и импорта.

Мне было интересно, может ли кто-нибудь, кто имеет опыт работы с подобным трудом, указать мне правильное направление в отношении образца кода, учебников и т. Д.?

Или если кто-то может рекомендовать лучшую альтернативу NPOI?

+0

У вас установлен Microsoft Office Excel на вашем сервере (т. Е. На машине, которая получит файл .xls и извлечет данные)? –

+0

C# MVC, вы имеете в виду ASP.NET MVC? –

ответ

3

В зависимости от расположения вашего файла excel (т. Е. Если он является табличным) вы можете использовать ADO.Net для этого. Вы можете запрашивать данные из листов и извлекать данные так, как если бы вы запрашивали истинную базу данных.

Вы можете начать с строки подключения: http://www.connectionstrings.com/excel

Тогда есть vb.net пример над на MSDN, что вы можете легко конвертировать в C#: http://support.microsoft.com/kb/311731

1

Считаете ли вы запустить пакет DTS? В зависимости от объема данных и при наличии каких-либо преобразований может быть интересно рассмотреть пакет SSIS для запуска из вашего кода. Execute a SSIS package FROM VB.NET or C#

1

Коммерческий инструмент Aspose.Cells обычно используется для чтения файлов Microsoft Office Excel.

Другой вариант, как указано в @ Negative0, - использовать ADO.NET.

1

Использование Microsoft Jet: Сначала нужно создать соединение

string Con2 = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 
filename + @";Extended Properties='Excel 12.0;IMEX=1'"; 
System.Data.OleDb.OleDbConnection ExcelConnection = 
new System.Data.OleDb.OleDbConnection(Con2); 

Затем сделать что-то вроде ...

DataSet ds = new DataSet(); 

// Create OleDbCommand object and select data from worksheet TABNAME 
OleDbCommand cmd_hulpkostenplaatsen = new OleDbCommand("SELECT * FROM [TABNAME$]", ExcelConnection); 
     OleDbDataAdapter oleda_hulpkostenplaatsen = new OleDbDataAdapter(); 
     oleda_hulpkostenplaatsen.SelectCommand = cmd_hulpkostenplaatsen; 
     oleda_hulpkostenplaatsen.Fill(ds, "HULPKOSTENPLAATSEN"); 

     foreach (DataRow row in ds.Tables["HULPKOSTENPLAATSEN"].Rows) 
     { 
     } 
1

Либо сервер базы данных или приложение может обрабатывать импорта данных.

Чтобы создать базу данных, создайте пакет SSIS (ответ выше рекомендуемой DTS, но DTS устарел). Самый простой способ сделать это - использовать SQL Server Management Studio для «Импорт» данных в базу данных (щелкните правой кнопкой мыши на БД и выберите «Задачи»). Последний шаг импорта позволяет сохранить параметры импорта в виде пакета SSIS. Затем вы выполнили бы пакет SSIS из своего приложения.

Ваше приложение также может обрабатывать его непосредственно несколькими способами. Windows поставляется с драйвером ODBC для файлов Excel или вы можете использовать Excel API для открытия рабочей книги в своем приложении, переноса данных в ваше приложение и последующей записи в базу данных. Маршрут ODBC, вероятно, быстрее реализуется, если все необходимые вам данные - это просто текст из листа (если вам нужно оценить форматирование или выйти за рамки простого получения текстовых данных, вы должны использовать API).

Смежные вопросы