Qt 使用 ODBC 驱动程序连接到 XLSX 文件
Qt connect to XLSX file with ODBC driver
我有从 Qt wiki 中获取的代码:
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" + QString("sht.xlsx"));
if(db.open())
{
QSqlQuery query("select * from [" + QString("Sheet1") + "$]");
// Select range, place A1:B5 after $
while (query.next())
{
QString column1= query.value(0).toString();
qDebug() << column1;
}
}
else {
qDebug() << db.lastError().text();
}
但是连接不上:(我不明白为什么:
[Microsoft] [Driver Manager ODBC] Data source name not found and no driver specified, the default QODBC3: Unable to connect
需要像在 ODBC 中一样指定完整路径和设置全名:
DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};
一如既往,堆栈毫无用处。小伙伴们只能回答菜鸟问题,真正的问题留在这里没有答案。
您必须编译数据库驱动程序 dll 并将其放入 .exe 文件附近名为 'sqldrivers' 的子文件夹中。在您的情况下,这应该是 qsqlodbc*.dll。 Asterisk 是 Qt 主版本号。
您需要为 xlsx 安装 obdc excel 驱动程序并将其添加到您的连接字符串中而不是 xls
或
您可以将 excel 文件另存为 xls 文件并使用它 (2003-2007 excel)
我有从 Qt wiki 中获取的代码:
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" + QString("sht.xlsx"));
if(db.open())
{
QSqlQuery query("select * from [" + QString("Sheet1") + "$]");
// Select range, place A1:B5 after $
while (query.next())
{
QString column1= query.value(0).toString();
qDebug() << column1;
}
}
else {
qDebug() << db.lastError().text();
}
但是连接不上:(我不明白为什么:
[Microsoft] [Driver Manager ODBC] Data source name not found and no driver specified, the default QODBC3: Unable to connect
需要像在 ODBC 中一样指定完整路径和设置全名:
DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};
一如既往,堆栈毫无用处。小伙伴们只能回答菜鸟问题,真正的问题留在这里没有答案。
您必须编译数据库驱动程序 dll 并将其放入 .exe 文件附近名为 'sqldrivers' 的子文件夹中。在您的情况下,这应该是 qsqlodbc*.dll。 Asterisk 是 Qt 主版本号。
您需要为 xlsx 安装 obdc excel 驱动程序并将其添加到您的连接字符串中而不是 xls
或
您可以将 excel 文件另存为 xls 文件并使用它 (2003-2007 excel)