2016-02-03 2 views
0

Я создал веб-приложение с помощью C# для импорта файла excel в Microsoft Dynamics CRM. Я использовал Fileupload для импорта файла excel.Ошибка ASP.NETC# при импорте данных из excel

Вот фрагмент кода:

Импорт Кнопка:

if (FileUpload1.PostedFile != null) 
    { 
     string FilePath = Path.GetFileName(this.FileUpload1.FileName); 
     string FileName = Server.MapPath(Path.GetFileName(FilePath)); 
     string Extension = Path.GetExtension(this.FileUpload1.FileName); 
     DataTable dt = ImportData(FileName, Extension); 

И это код ImportData:

private DataTable ImportData(string Filepath, string Extension) 
{ 
    string connString = ""; 
    DataTable dt = new DataTable(); 

    switch (Extension) 
    { 
     case ".xls": 
      connString = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString; 
      break; 
     case ".xlsx": 
      connString = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString; 
      break; 
    } 

    connString = string.Format(connString, Filepath, 1); 

    try 
    { 
     OleDbConnection excelConn = new OleDbConnection(connString); 
     OleDbCommand excelCmd = new OleDbCommand(); 
     OleDbDataAdapter oda = new OleDbDataAdapter(); 
     excelCmd.Connection = excelConn; 

     excelConn.Open(); 
     DataTable dtexcelschema; 
     dtexcelschema = excelConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 
     string SheetName = dtexcelschema.Rows[0]["TABLE_NAME"].ToString(); **The Error Come from this line** 
     excelConn.Close(); 

     excelConn.Open(); 
     excelCmd.CommandText = "Select * from [" + SheetName + "]"; 
     oda.SelectCommand = excelCmd; 
     oda.Fill(dt); 
     excelConn.Close(); 
    } 
    catch (Exception ex) 
    { 
     Label1.Text = ex.Message; 
    } 
    return dt; 
} 

Когда я пытался импортировать первенствует в CRM. Я получил это сообщение: «В позиции 0 нет строки».

Я не знаю, что здесь происходит. Фактически, прежде чем я создаю веб-приложение, я создал приложение Windows с помощью этого кода и успешно импортировал данные. Но когда я копирую этот код в веб-приложение, я получил это сообщение.

EDITED

Это строка соединения внутри веб-конфигурации:

<add name ="Excel03ConString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR={1}'"/> 
<add name ="Excel07ConString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR={1}'"/> 
+1

спасают вас файл после загрузки на сервер где-нибудь? –

+0

Нет, я просто импортирую данные Excel в динамику ms crm. И этот код хорошо работает на приложении Windows –

+0

, что вы получаете в «Filepath», и у вас есть преимущество на том же пути с данными? –

ответ

0

Использование Это:

string Filename = Path.GetFileName(FileUpload1.PostedFile.FileName); 
     string Extension = Path.GetExtension(FileUpload1.PostedFile.FileName); 
     string Folderpath = ConfigurationManager.AppSettings["FolderPath"]; 

     string Filepath = Server.MapPath(Folderpath + Filename); 
     FileUpload1.SaveAs(Filepath); 

     DataTable dt = ImportData(Filepath, Extension); 
+0

Это работает, спасибо –