2014-11-29 5 views
0

Я создал приложение asp.net mvc4, и я развернул его в Интернете.Как импортировать тот же файл Excel в SQL Server

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

На моем локальном хосте он работает нормально, но на сервере, когда я пытаюсь импортировать файл, который имеет такое же имя, как существующий файл он дает мне ошибку

(я не могу увидеть исключение, я вижу просто некоторые интересные сообщения (улов .....)

Это часть кода:

if (Request.Files["file"].ContentLength > 0) 
{ 
    string fileExtension = System.IO.Path.GetExtension(Request.Files["file"].FileName); 

    if (fileExtension == ".xls" || fileExtension == ".xlsx") 
    { 
     string fileLocation = Server.MapPath("~/Content/") + Request.Files["file"].FileName; 

     if (System.IO.File.Exists(fileLocation)) 
     { 
      System.IO.File.Delete(fileLocation); 
     } 

     Request.Files["file"].SaveAs(fileLocation); 

     string excelConnectionString = string.Empty; 

     excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 
     fileLocation + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\""; 

     //connection String for xls file format. 
     if (fileExtension == ".xls") 
     { 
      excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + 
      fileLocation + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""; 
     } 
     //connection String for xlsx file format. 
     else if (fileExtension == ".xlsx") 
     { 
      excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 
      fileLocation + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\""; 
     } 

     //Create Connection to Excel work book and add oledb namespace 
     OleDbConnection excelConnection = new OleDbConnection(excelConnectionString); 
     excelConnection.Open(); 

     DataTable dt = new DataTable(); 

     dt = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 

     if (dt == null) 
     { 
      return null; 
     } 

     String[] excelSheets = new String[dt.Rows.Count]; 
     int t = 0; 

     //excel data saves in temp file here. 
     foreach (DataRow row in dt.Rows) 
     { 
      excelSheets[t] = row["TABLE_NAME"].ToString(); 
      t++; 
     } 

     OleDbConnection excelConnection1 = new OleDbConnection(excelConnectionString); 

     string query = string.Format("Select * from [{0}]", excelSheets[0]); 

     using (OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, excelConnection1)) 
     { 
      dataAdapter.Fill(ds); 
     } 

     excelConnection.Close(); 
    } 

    if (fileExtension.ToString().ToLower().Equals(".xml")) 
    { 
     string fileLocation = Server.MapPath("~/Content/") + Request.Files["FileUpload"].FileName; 

     if (System.IO.File.Exists(fileLocation)) 
     { 
      System.IO.File.Delete(fileLocation); 
     } 

     Request.Files["FileUpload"].SaveAs(fileLocation); 
     XmlTextReader xmlreader = new XmlTextReader(fileLocation); 

     ds.ReadXml(xmlreader); 
     xmlreader.Close(); 
    } 
} 

ответ

0

Мой ответ приходит без знания конкретного исключения (как вы упомянули, вы не можете увидеть исключение самостоятельно). По моему аналогичному опыту, я столкнулся с одной и той же проблемой, и это было разрешено установкой драйвера Microsoft ACE OLEDB 12.0 на сервере. Я установил следующий компонент для решения этой проблемы:

2007 Office System Driver - Компоненты подключения Передача данных: http://www.microsoft.com/en-us/download/details.aspx?id=23734

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

+0

думаю, что вы сделаете возврат, чтобы сообщить вам, если это сработало, но я думаю, что это лучший ответ! – saidmohamed11

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