2014-02-01 3 views
1

Я получаю сообщение об ошибке, какМагазин Excel Лист данных на SQL сервере

Формат строки инициализации не соответствует спецификации, начиная с индекса 0.

При экспорте в файл Excel. Пожалуйста посоветуйте

Это мой код:

string file = string.Format("{0}\\{1}", Request.PhysicalApplicationPath,Guid.NewGuid().ToString().Replace("-",string.Empty)); 
fileuploadExcel.SaveAs(file); 

//Create connection string to Excel work book 
string excelConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HRD=YES;IMEX=1'", fileuploadExcel.PostedFile.FileName); 

//Create Connection to Excel work book 
OleDbConnection excelConnection =new OleDbConnection(file); 

//Create OleDbCommand to fetch data from Excel 
OleDbCommand cmd = new OleDbCommand("Select [ID],[Name],[Desi] from [Varun]", excelConnection); 
excelConnection.Open(); 
OleDbDataReader dReader; 
dReader = cmd.ExecuteReader(); 
SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection); 

//Give your Destination table name 
sqlBulk.DestinationTableName = "Excel_table"; 
sqlBulk.WriteToServer(dReader); 
excelConnection.Close(); 
+0

Не могли бы вы добавить информацию о 'fileuploadExcel',' Request' и 'strConnection'. Какие пространства имен нужны, как они создаются? – surfmuggle

ответ

0

Ну, я вижу, одна вещь, которую легко решить ... попробуйте изменить:

SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection); 

быть:

SqlBulkCopy sqlBulk = new SqlBulkCopy(excelConnection); 


Если у вас все еще есть проблемы ... общие моменты:

  1. Уловка для поиска сообщений об ошибках в Google: укажите строку поиска в кавычках. Когда я искал на "Format of the initialization string does not conform to specification starting at index 0"ЦИТАТЫ были критическими), я нашел много примеров, все из которых сказал:
  2. Это проблема со строкой подключения.

Конечно, пожалуйста, дайте нам знать, если изменение excelConnection помогает ... или нет у вас есть другие вопросы ... и если ваш окончательный код сильно отличается, пожалуйста, добавить, что окончательный код в нижней части вопрос как «Обновление:»

Еще два вопроса:
(A) С какой версией SQL Server вы работаете (часто полезно знать)?
(B) Предположим, вы сначала импортировали электронную таблицу Excel в SQL Server, затем обратились к ней как к таблице? В Management Studio (или Enterprise Manager), если вы щелкните правой кнопкой мыши по имени базы данных, перейдите в «Задачи», вы увидите возможность импорта данных. В SQL Server 2005 или более поздней версии этот мастер использует SSIS; в SQL Server 2000 этот мастер использует DTS.

Если все, что вы намереваетесь, является разовым импортом, эти мастера намного проще.

С учетом того, что этот импорт необходимо повторно использовать, для электронной таблицы, которая обновляется с течением времени ... Я бы все же решил импортировать в SQL Server, потому что, если вы говорите о электронной таблице Excel, которая является обновленный людьми, вы вполне можете столкнуться с проблемами с предсказанием формата : люди вставляли в некоторые ячейки с определенным (другим) форматом? (Это может привести к получению NULL/пустых данных ... с SSIS-DTS было более прощающим.) Пробовали ли они создать новую вкладку в электронной таблице? (Это эффективно изменяет ваш FROM: «имя_таблицы» должно соответствовать имени «вкладки» в Excel.) Конечно, эти события также могут влиять на импорт в SQL Server ... но по крайней мере цель импорта - SQL Таблица сервера - всегда может существовать и всегда быть тем же самым форматом, поэтому проблемы с видимым пользователем или в реальном времени, влияющие на ваше приложение webpage/ASP.NET, будут более предсказуемыми.

Надеюсь, что это поможет ...

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