Две программы, пытающиеся прочитать Excel, одна преуспевает, другая завершается с одним и тем же кодом

У меня есть две программы, не связанные друг с другом, но у них есть идентичный метод, где они пытаются прочитать строки из файла Excel.

Программа 1

    public DataTable GetExcelInfo(string filepath)
    {
        DataTable datatab = new DataTable();
        try
        {
            string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath + ";Excel 8.0;IMEX=1;HDR=NO;TypeGuessRows=1;ImportMixedTypes=Text\\";
            using (OleDbConnection conn = new OleDbConnection(connectionString))
            {
                conn.Open();
                OleDbCommand cmd = new OleDbCommand("SELECT Format([F1], \"#\"), Format([F2], \"#\"), Format([F3], \"#\") FROM [Sheet1$]", conn);
                OleDbDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    string[] values = new string[3];                        
                    values[0] = reader.GetString(0);
                    values[1] = reader.GetString(1);
                    values[2] = reader.GetString(2);

                    DataRow dr = datatab.NewRow();
                    dr.ItemArray = values;
                    datatab.Rows.InsertAt(dr, i);
                    i++;
                }
            }
        }
    }

Программа 2

private static DataTable GetInvoiceItems(string filepath)
{
        DataTable dt = new DataTable();
        string excelConString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath + ";Excel=8.0;IMEX=1;HDR=NO;TypeGuessRows=1;ImportMixedTypes=Text\\";
        using (OleDbConnection conn = new OleDbConnection(excelConString))
        {
            OleDbDataAdapter ada = new OleDbDataAdapter("SELECT [F1], [F2], [F3], [F4], [F5] FROM [Sheet1$]", conn);
            conn.Open();
            ada.Fill(dt);
        }
        return dt;
}

Теперь странно то, что первая программа прекрасно работает на том же компьютере, а вторая программа выдает сообщение об отсутствии установленного ISAM на компьютере. Какие-либо предложения?

1 ответ

Решение

Несмотря на ваши утверждения, они оба одинаковы, если вы посмотрите внимательно, это не так. Посмотрите на ваши строки подключения...

Программа 1

"... Excel 8.0;IMEX=1;HDR=NO;TypeGuessRows=1;ImportMixedTypes=Text\\"

Программа 2

"... Excel=8.0;IMEX=1;HDR=NO;TypeGuessRows=1;ImportMixedTypes=Text\\"

Там не должно быть = в Excel 8.0 в программе 2.

Другие вопросы по тегам