您的位置:首页 > 其它

Excel 使用ODBC直接访问

2015-08-29 22:20 239 查看
原来Excel 可以使用ODBC直接访问啊,一直以来都是一格一格读取,比较烦,这次又学习了!!

此处记录ODBC连接Excel的DSN字符串:

“DRIVER={Microsoft Excel Driver (*.xls)};FIRSTROWHASNAMES=1;READONLY=FALSE;DBQ=%1”

—%1 为要连接的Excel文件。

—READONLY=FALSE; 如果没有这段,excel默认是按照只读打开的,只能select 操作

—FIRSTROWHASNAMES=1; 这段表明excel文件的第一行是列名。

Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QSqlDatabase excel = QSqlDatabase::addDatabase("QODBC");
QString ExcelFileName = QFileDialog::getOpenFileName(this,tr("选择要打开的文件"),".",tr("Excel File(*.xls)"));
if(ExcelFileName.isEmpty())
return;
QString dsn =QString("DRIVER={Microsoft Excel Driver (*.xls)};FIRSTROWHASNAMES=1;READONLY=FALSE;DBQ=%1").arg(ExcelFileName);
excel.setDatabaseName(dsn);
if(!excel.open())
{
qDebug() <<"open database file "<<ExcelFileName<<"error!";
return;
}
QSqlQuery query = QSqlQuery(excel);
query.exec("select * from [people$]");

//读取记录
qDebug()<<query.record().count();
query.next();
//QTextCodec *codec = QTextCodec::codecForName("UTF-8");

qDebug()<<query.value("name").toString();
ui->lineEdit->setText(query.value("name").toString());

//插入记录
if(!query.exec("insert into [people$](id,name,old)  values(5,'nowhaha',43)"))
{
//qDebug()<<   query.lastError().text();
QMessageBox::information(this,"info", query.lastError().text());
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: