2011-02-17 76 views
1

我想插入數據並使用ODBC連接從Excel中選擇數據。我已成功地連接到它:使用Microsoft Excel通過ODBC驅動程序與PHP

$dbh = new PDO("odbc:Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dbq=$file_name", $username, $password); 

不過,我不確定如何查詢Excel作爲有最小文檔此!我嘗試這樣的:

$query = "INSERT INTO $sheet ($cell) VALUES ($value)"; 

$result = $dbh->query($query); 

但是,這會導致錯誤:

Array ([0] => 07002 [1] => -3010 [2] => [Microsoft][ODBC Excel Driver] The Microsoft Office Access database engine could not find the object 'Sheet1'. Make sure the object exists and that you spell its name and the path name correctly. (SQLExecute[-3010] at ext\pdo_odbc\odbc_stmt.c:254) [3] => 07002)

通過對象,希望他們的意思是一個Excel工作表?

感謝所有的幫助

+0

您的工作簿中是否存在「Sheet1」,或者您是否正在寫入「Worksheet1」? – 2011-02-17 13:30:38

+0

Sheet1確實存在,當我打開excel時,我可以看到第一張紙被命名爲「Sheet1」。 – Abs 2011-02-17 13:50:39

回答

2

您是否需要使用ODBC?我總是發現它在*中很痛苦。
如果你不是被迫使用ODBC,我建議你嘗試PHPExcel類可用here(不附屬),這使得從PHP讀取和寫入Excel非常容易在很多場合。

如果您已經使用Excel打開Excel工作表並確認其確實包含名爲Sheet1的工作表,您可能想要擴大搜索範圍 - 工作表或單元格可能被鎖定以防編輯?這可能會導致最奇怪的錯誤。

+0

我同意,ODBC是一個痛苦,但我想保持它與我爲Access編寫的其他代碼內聯,這很好。你知道一個可以顯示所有表單的查詢嗎?也許這將有助於找出每張表格實際上被調用的內容! – Abs 2011-02-17 13:43:21

相關問題