C # 3.5 чтение файлов Excel - PullRequest
       21

C # 3.5 чтение файлов Excel

3 голосов
/ 24 августа 2010

У меня странное поведение, когда я пытаюсь прочитать лист XML, используя этот код:

string CONNEC_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=No;IMEX=2;\"";
            string fullFilePath = @"C:\Tmp\TestFile.xls";
            using (OleDbConnection objCon = new OleDbConnection(string.Format(CONNEC_STRING, fullFilePath)))
            {
                using (OleDbCommand cm = new OleDbCommand("Select * From [MYCELLSRANGE]", objCon))
                using (OleDbDataAdapter da = new OleDbDataAdapter(cm))
                {
                    DataTable dt = new DataTable();
                    objCon.Open();
                    da.Fill(dt);
                    objCon.Close();
                }
            }

Если файл Excel закрыт, я получаю сообщение об ошибке «Внешняя таблица не в ожидаемом формате». Когда я открываю файл, если я выполняю вышеуказанный код, он работает нормально, и я могу читать данные, содержащиеся в MYCELLSRANGE. Итак, кто-нибудь имеет представление об этой проблеме? Спасибо за ответы.

1 Ответ

2 голосов
/ 07 сентября 2010

Я полагаю, потому что Jet Engine использует приложение Excel для интерпретации файла. Я столкнулся с этим вопросом однажды сам. Когда вы используете ссылку на Excel.dll и интерпретируете файл Excel, вам необходимо создать новый экземпляр приложения для чтения файла. Jet просто делает это, чтобы получить данные. Я предлагаю использовать этот код вместо.

Если вам нужна дополнительная помощь, дайте мне знать. Я успешно сделал это в VB.NET в различных моих приложениях.

...