前言
Qt creator使用QAxObject库函数将excel表格导入SqLite数据库中并显示在QTableView控件中
提示:以下是本篇文章正文内容,下面案例可供参考
一、在工程文件中添加axcontainer模块
QT += core gui sql network axcontainer
二、导入SqLite数据库并显示到QTableView控件上
代码如下(示例):
QAxObject excel("Excel.Application");
excel.setProperty("Visible", false); //隐藏打开的excel文件界面
QAxObject *workbooks = excel.querySubObject("WorkBooks");
QString file_path = QFileDialog::getOpenFileName();
QAxObject *workbook = workbooks->querySubObject("Open(QString, QVariant)", file_path); //打开文件
QAxObject * worksheet = workbook->querySubObject("WorkSheets(int)", 1); //访问第一个工作表
QAxObject * usedrange = worksheet->querySubObject("UsedRange");
QAxObject * rows = usedrange->querySubObject("Rows");
int intRows = rows->property("Count").toInt(); //行数
QString Range = "A1:D" +QString::number(intRows);
QAxObject *allEnvData = worksheet->querySubObject("Range(QString)", Range); //读取范围
QVariant allEnvDataQVariant = allEnvData->property("Value");
QVariantList allEnvDataList = allEnvDataQVariant.toList();
int i = 0;
QProgressBar *p = new QProgressBar(this);
p->setMinimum(0);
p->setMaximum(intRows);
for(i=1; i< intRows; i++)
{
QVariantList allEnvDataList_i = allEnvDataList[i].toList() ;
p->setValue(i);
p->setGeometry(10,70,300,30);
p->show();
p->setOrientation(Qt::Horizontal);
//此处为将数据插入到数据库,自己写的函数进行调用,如需+qq3406285193,~~
SqlModel::insert_Singlepro_info(p_number,allEnvDataList_i[0].toString(),allEnvDataList_i[1].toString(),allEnvDataList_i[2].toString(),allEnvDataList_i[3].toString());
}
p->setValue(intRows);
workbooks->dynamicCall("Close()");
excel.dynamicCall("Quit()");
if(QMessageBox::Ok == QMessageBox::question(this,"提示","导入成功,是否显示?",QMessageBox::Ok|QMessageBox::No))
{
p->hide();
pro_model = new QSqlTableModel;
//显示单项工程的细节
pro_model->setTable("Singlepro_info");
pro_model->setEditStrategy(QSqlTableModel::OnManualSubmit);
pro_model->setFilter(QObject::tr("单项工程编号='%1'").arg(p_number));
pro_model->select();
pro_model->setHeaderData(0,Qt::Horizontal,tr("序号"));
pro_model->setHeaderData(1,Qt::Horizontal,tr("单项工程编号"));
pro_model->setHeaderData(2,Qt::Horizontal,tr("部位"));
pro_model->setHeaderData(3,Qt::Horizontal,tr("物资名称"));
pro_model->setHeaderData(4,Qt::Horizontal,tr("型号规格"));
pro_model->setHeaderData(5,Qt::Horizontal,tr("用量"));
ui->tableView->setModel(pro_model);
ui->tableView->hideColumn(0);
ui->tableView->hideColumn(1);
ui->countLabel->setText(QString::number(i-1+count));
}
总结
以上就是今天要讲的内容,本文仅仅简单介绍了Qt creator使用QAxObject库函数将excel表格导入SqLite数据库中并显示在QTableView控件中,而Qt creator提供了大量能使我们快速便捷地处理数据的函数和方法,对于qt中的其他操作问题,请各位大神移步博主其他文章或是关注博主等待后续发布。