2013-09-05 4 views
0

Mine - это приложение Windows C#. Когда я запускаю это приложение на своем локальном компьютере, он дает следующую ошибку: - «Формат строки инициализации не соответствует спецификации, начинающейся с индекса 128».Формат строки инициализации не соответствует спецификации, начинающейся с индекса 128

try 
{ 
    string path = System.IO.Path.GetFullPath("E:\\09-2013\\SalesRep\\Openleads.xlsx"); 
    if (Path.GetExtension(path) == ".xls") 
    { 
     oledbConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; 
     Data Source=" + path + "Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""); 
    } 
    else if (Path.GetExtension(path) == ".xlsx") 
    { 
     oledbConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; 
     Data Source=" + path + "Extended Properties='Excel 12.0;HDR=YES;IMEX=1;';"); 
    } 

    oledbConn.Open(); 
    OleDbCommand cmd = new OleDbCommand(); ; 
    OleDbDataAdapter oleda = new OleDbDataAdapter(); 
    DataSet ds = new DataSet(); 

    cmd.Connection = oledbConn; 
    cmd.CommandType = CommandType.Text; 
    cmd.CommandText = "SELECT * FROM [Raw Data$]"; 
    oleda = new OleDbDataAdapter(cmd); 
    oleda.Fill(ds, "dsSlno"); 
    grvData.DataSource = ds.Tables["dsSlno"].DefaultView; 
    oleda = new OleDbDataAdapter(cmd); 
    oleda.Fill(ds); 

    grvData.DataSource = ds.Tables[1].DefaultView; 
} 
catch (Exception ex) 
{ 

} 
finally 
{ 
    oledbConn.Close(); 
} 
+0

, где он поднимает эту ошибку? –

+0

@RowlandShaw: Выполняя следующую строку, я получаю эту ошибку. oledbConn = new OleDbConnection ("Provider = Microsoft.ACE.OLEDB.12.0; Источник данных =" + путь + "Расширенные свойства = 'Excel 12.0; HDR = YES; IMEX = 1;';"); Теперь я изменил эту строку как oledbConn = new OleDbConnection ("Provider = Microsoft.ACE.OLEDB.12.0; Источник данных =" + путь + "Расширенные свойства = \" Excel 12.0; HDR = YES; IMEX = 1 \ " «); Несмотря на то, что я получаю то же самое с небольшой модификацией. Он был изменен как «Формат строки инициализации не соответствует спецификации, начинающейся с индекса 121». – Venil

ответ

2

Ваш путь нужен знак @ в передней части его, чтобы избежать ваши обратные слэши:

Существует нуль-символ завершения (\ 0) после «E:» в ней вызывает у вас вопрос, когда он соединен с вашей строкой соединения.

Изменить это:

string path = System.IO.Path.GetFullPath("E:\09-2013\SalesRep\Openleads.xlsx");

Для этого:

string path = System.IO.Path.GetFullPath(@"E:\09-2013\SalesRep\Openleads.xlsx");

И вы должны быть хорошо.