在Qt中使用ODBC驱动程序读取excel文件(.csv)

时间:2015-02-19 22:35:08

标签: excel odbc qt5.3 qsqldatabase

我有一个我想在Qt中解析的csv文件。我想使用sql插件,但我不确定如何设置。我目前无法从我的Qt应用程序打开.csv文件 - 我必须手动打开它,然后启动我的应用程序,希望从中查询。

如果在我开始使用应用程序之前手动打开了我尝试阅读的文件,则会出现以下驱动程序错误:

[Microsoft][ODBC Excel Driver] External table is not in the expected format.
[Microsoft][ODBC Excel Driver] General Warning Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x1ae0 Thread 0x1f2c DBC 0x4c52a4 Excel.' QODBC3: Unable to connect.

这是我的设置......

Qt Creator Build / Version:

  • 我在Qt 5.3工作,我没有从源码构建 - 我下载了安装程序。
  • 我已经配置了一些调试工具包,但我目前正在使用的那个使用MSVC 2012 openGL 32位编译器(我已将其设置为默认值)。
  • 我的计算机上有64位Visual Studio 2012和2010.
  • 我没有制作sql驱动程序,它们已经安装好了(可用的驱动程序:()(" QSQLITE"," QMYSQL"," QMYSQL3& #34;," QODBC"," QODBC3"," QPSQL"," QPSQL7"))

我的.pro文件挂钩到sql插件:

QT       += core gui network sql

我还有以下内容:

#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>

这是我建立Excel数据库连接并尝试查询的代码:

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
QString pathString = QString("C:\\MY_FILES\\test_work\\Xena\\Xena2544-2G\\Reports\\asdf_SN1_RFC2544_7_port_verify.csv");


db.setDatabaseName("DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" + pathString );

 if (!db.open())
{

    QSqlError er = db.lastError();
    QMessageBox::information(0, "Error", er.text());

}
if(db.open())
{
    QSqlQuery query("select * from [" + QString("asdf_SN1_RFC2544_7_port_verify") + "$B13]");  //NEVER GETS HERE UNLESS i ALREADY MANUALLY OPENED THE FILE BEFORE RUNNING CODE.

        QString process1Result = query.value(0).toString();
        ui->verifyUnit1Status_lb->setText(process1Result);

}

文件权限 - 完全控制 - 修改 - 阅读&amp;执行 - 阅读 - 写

我真的很想让这个功能继续下去。我会假设错误在连接字符串中,但此时我已经尝试了几个小时而没有成功。

提前谢谢你。

0 个答案:

没有答案