2016-04-08 11 views
0

Я пытаюсь прочитать файл «.xlsx» с помощью OleDbDataAdapter. Пожалуйста, прочитайте до конца сообщения перед ответом. Вот код, который я использую:C# Ошибка чтения файла Excel с OleDbDataAdapter

private DataTable ExtractDataFromFile(string fileName) 
    { 
     DataTable sheetData = new DataTable(); 
     using (OleDbConnection conn = this.returnConnection(fileName)) 
     { 
      try{ 
       conn.Open(); 
       OleDbDataAdapter sheetAdapter = new OleDbDataAdapter("select * from [Sheet1$]", conn); 
       sheetAdapter.Fill(sheetData); 
      } 
      catch(Exception e) 
      { 
       Console.WriteLine(e); 
       Console.ReadLine(); 
      } 
     } 
     return sheetData; 
    } 

    private OleDbConnection returnConnection(string fileName) 
    { 
     return new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=Excel 12.0;"); 
    } 

Но я получаю странную ошибку. Файлы Excel У меня есть для запроса были даны мне клиентом, и я получаю следующее сообщение об ошибке при попытке открыть их

External table is not in the expected format 

Вот улов: Я заметил, что если я откройте один из файлов Excel и вручную сохраните его один раз и закройте файл, затем я могу запросить файл с помощью моей программы!

+1

Попытайтесь не обмануть расширение. Откройте файл в текстовом редакторе, если вы можете прочитать содержимое, а может быть, это файл CSV, а не XLS – Steve

+0

Спасибо за ваш ответ. Однако открытие файла с помощью Notepad ++ дает мне XML-код, а не истинный контент файла «.xlsx». –

ответ

0

Вы уверены, что создали файл xlsx с помощью Microsoft Office? Этот файл может быть открытым XML-документом, но, возможно, не создан MS Office, поэтому MS oledbadapter не может его прочитать. Если вы откроете и сохраните его, он, вероятно, преобразует его в MS-версию открытого xml, а затем oledbadapter сможет его прочитать.

Вы можете посмотреть в DocumentFormat.OpenXml, чтобы читать файлы xlsx.

 Смежные вопросы

  • Нет связанных вопросов^_^