Delphi FireDac打开excel xlsx文件

Delphi FireDac打开excel xlsx文件,excel,delphi,firedac,Excel,Delphi,Firedac,我正在尝试使用FireDAC Delphi Rio 10.3.2打开Excel(xlsx)文件。我执行了以下代码: FDConnection.Params.Clear; FDConnection.Params.Add('Database=<myfile>'); FDConnection.Params.Add('ODBCDriver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}'); FDConnection.Para

我正在尝试使用FireDAC Delphi Rio 10.3.2打开Excel(xlsx)文件。我执行了以下代码:

FDConnection.Params.Clear;
FDConnection.Params.Add('Database=<myfile>');
FDConnection.Params.Add('ODBCDriver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}');
FDConnection.Params.Add('DriverID=ODBC');
FDConnection.Params.Add('ODBCAdvanced=HDR=No');
FDConnection.Open;
FDConnection.Params.Clear;
FDConnection.Params.Add('Database=');
FDConnection.Params.Add('ODBCDriver={MicrosoftExcel驱动程序(*.xls,*.xlsx,*.xlsm,*.xlsb)});
FDConnection.Params.Add('DriverID=ODBC');
FDConnection.Params.Add('ODBCAdvanced=HDR=No');
连接。打开;
我注意到Delphi Rio FireDAC已升级到Excel 97-2003

这是我在使用xlsx文件的FDConnection时遇到的错误:


任何人都可以指导如何使用FireDAC打开Excel(xlsx)文件吗?

使用COM访问Excel更容易,如下所示:,但如果您坚持使用FireDAC,则必须执行以下步骤(检查Delphi 10.2.3 Tokyo和MS Office 2016,尚未尝试深入挖掘FireDAC不执行这些操作的原因):

  • 在公式->定义名称中定义包含要访问的数据(带有标题)的单元格的名称
  • Excel必须正在运行且工作簿应打开(您可以使用COM启动Excel并确保工作簿已打开)
  • 如果工作簿是通过插入/修改/删除数据而更改的,则必须保存工作簿
  • 如果未执行上述任何操作,您将看到非常有意义的消息:外部表未采用预期格式


    由于您需要对Excel进行COM访问,以确保工作簿在Excel中打开,因此我建议使用方法2)从:

    两件事:1)您遇到了什么问题,导致无法连接到所需的Excel文件?2) 您真的需要使用FireDAC+ODBC吗?使用TAdoConnection和MS Jet 4.0 OLE DB驱动程序连接到Excel文件工作正常。如果选择xlsx,打开FDConnection时会出现异常。使用FireDAC我可以使用SQL查询,而使用TADOConnection则不能。您在TADOConnection中使用了什么SQL?TFDConnection的异常实际上是什么意思?如果你需要帮助,你应该提供这样的信息,而不必被问。我知道FD和ADO,谢谢。Ime,FD+Excel存在ADO无法解决的问题,这就是我问的原因。不管怎样,这个问题我已经解决了。我建议你提供一个正确的而不是截图和不完整的细节。你使用的是Win10 64位吗?如果是,是哪个版本?Windows 10 Pro 64位版本1803I做了你提到的所有事情。对于使用ADO,需要ODBC DSN,我试图避免使用ODBC DSN,因为我的客户机对ODBC DSN一无所知。我必须为客户提供一个简单的解决方案。他打开一个excel文件,我的应用程序将为他生成数据。我成功地使用了xls文件,没有任何例外,使用了我提到的相同代码。TFDPhysODBCDriverLink没有xlsx驱动程序,只有Microsoft Excel驱动程序(*.xls)。