使用Microsoft Excel通过ODBC驱动程序与PHP

问题描述:

我想插入数据并使用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

Sheet1在Excel中称为Sheet1 $。 Excel工作簿在this way are read-only by default中打开。

您是否需要使用ODBC?我总是发现它在*中很痛苦。
如果你不是*使用ODBC,我建议你尝试PHPExcel类可用here(不附属),这使得从PHP读取和写入Excel非常容易在很多场合。

如果您已经使用Excel打开Excel工作表并确认其确实包含名为Sheet1的工作表,您可能想要扩大搜索范围 - 工作表或单元格可能被锁定以防编辑?这可能会导致最奇怪的错误。

+0

我同意,ODBC是一个痛苦,但我想保持它与我为Access编写的其他代码内联,这很好。你知道一个可以显示所有表单的查询吗?也许这将有助于找出每张表格实际上被调用的内容! – Abs 2011-02-17 13:43:21