2014-02-12 149 views
3

我想問一問,爲什麼我在嘗試連接excel 2000/3和2010時遇到此異常?無法識別的數據庫格式

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Data.OleDb; 

namespace md1_connect 
{ 
    class Program 
    { 

     static void Main (string[] args) 
     { 
      string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\"Book1.xls\"";    
      OleDbConnection MyConn = new OleDbConnection(ConnectionString); 
      OleDbCommand cmd = new OleDbCommand("SELECT * FROM[Sheet2$]", MyConn); 
      MyConn.Open(); 
      OleDbDataReader dataReader = cmd.ExecuteReader(); 

      while (dataReader.Read()) 
      { 
       Console.WriteLine(dataReader.GetDouble(0)); 
      } 
      MyConn.Close(); 
     } 
    } 
} 
+1

什麼異常? – Tarec

+1

嘗試編譯針對32位平臺的代碼。 – Crono

+1

@Tarec「無法識別的數據庫格式」我猜。來自標題。 – itsme86

回答

1

你需要通過附加告訴你使用Excel 97-2003(XLS而不是XLSX)提供者:

Extended Properties="Excel 8.0" 

Eg

string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\"Book1.xls\";Extended Properties=\"Excel 8.0\""; 
+0

我試過了,當我把該行放入時,它拋出連接字符串不正確的錯誤。 –

1

我不知道什麼是例外,但我可能知道你在說什麼。您可能正在編譯爲x64位,請強制它以32位(x86)運行。我認爲,設定可以在項目屬性下設置編譯選項

+0

我有32位的操作系統,所以它不會在32位編譯? –

相關問題