2013-06-03 2 views
0

Я пытаюсь прочитать лист Excel (.csv), открыв диалоговое окно из бизнес-центра SAP. Я не пробовал это раньше, и я получаю следующее сообщение об ошибке при попытке прочитать лист первенствовать:Не удалось найти устанавливаемый ISAM - Чтение таблиц Excel через SAP B1

private void GetFile() 
    { 
     using (GetFileNameClass oGetFileName = new GetFileNameClass()) 
     { 
      oGetFileName.Filter = "Excel files (*.csv)|*.csv"; 
      oGetFileName.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal); 
      Thread threadGetExcelFile = new Thread(new ThreadStart(oGetFileName.GetFileName)); 
      threadGetExcelFile.SetApartmentState(ApartmentState.STA); 

      try 
      { 
       threadGetExcelFile.Start(); 
       while (!threadGetExcelFile.IsAlive) ; // Wait for thread to get started 
       Thread.Sleep(1); // Wait a sec more 
       threadGetExcelFile.Join(); // Wait for thread to end 

       var fileName = string.Empty; 
       fileName = oGetFileName.FileName; 

       if (fileName != string.Empty) 
       { 
        string connString = ""; 
        System.Data.DataTable dt = new System.Data.DataTable();     

        connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="; 
        connString += fileName; 
        connString += ";Extended Properties=Excel 12.0 Xml;HDR=YES;IMEX=1;"; 

        OleDbConnection myConnection = new OleDbConnection(connString); 

        if (myConnection.State != ConnectionState.Open) 
         myConnection.Open(); 

        string sql = "SELECT * From [Sheet1$]"; <-------Error thrown here 

        using (OleDbDataAdapter adapter = new OleDbDataAdapter(sql, myConnection)) 
        { 
         adapter.Fill(dt); 
        } 
       } 
      } 
      catch (RulesException ex) 
      { 
       SboConnection.SboApplication.SetStatusBarMessage(ex.GetErrorMessages(), SAPbouiCOM.BoMessageTime.bmt_Medium, true); 
      } 
     } 
    } 

Ошибка «Не удается найти устанавливаемое ISAM» происходит в заявлении SQL. Как я могу решить эту проблему и прочитать лист Excel? Любая помощь оценивается.

ответ

1

Актуальность вопроса в соединении, ему нужны два ; (точка с запятой) в конце. Так * connString * должен быть как следующим образом:

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

Он работал для меня.