发现没有人逃得过导出文件导入文件,如果有,那就是时候未到
QString filepath = QFileDialog::getOpenFileName(this,QStringLiteral("选择Excel文件"),"",tr("Exel file(*.xls *.xlsx)"));
if(!filepath.isEmpty())
{
QAxObject *excel = new QAxObject(this); //连接Excel控件
if (excel->setControl("Excel.Application"))
{
qDebug() << "选择了Excel";
}
else
{
qDebug() << "选择了ket";
excel->setControl("ket.Application"); //连接Excel控件
}
//不显示窗体
excel->dynamicCall("SetVisible (bool Visible)","false");
//不显示任何警告信息。如果为true那么在关闭是会出现类似“文件已修改,是否保存”的提示
excel->setProperty("DisplayAlerts", false);
//获取工作簿集合
QAxObject *workbooks = excel->querySubObject("WorkBooks");
//打开打开已存在的工作簿
workbooks->dynamicCall("Open(const QString&)", filepath);
//获取当前工作簿
QAxObject* workbook = excel->querySubObject("ActiveWorkBook");
//获取工作表集合
QAxObject *worksheets = workbook->querySubObject("Sheets");
//获取工作表集合的工作表1,即sheet1
QAxObject *worksheet = workbook->querySubObject("WorkSheets(int)",1);
QAxObject* range = worksheet->querySubObject("UsedRange"); //获取该sheet的使用范围对象
QVariant var = range->dynamicCall("Value");
delete range;
QVariantList varRows = var.toList(); //得到表格中的所有数据
if(varRows.isEmpty())
{
return;
}
const int rowCount = varRows.size();
QStringList m_id,m_class,m_name,m_age;
for(int i = 1; i < rowCount; ++i) //
{
QVariantList rowData = varRows[i].toList();
m_id<<rowData[0].toString();
m_class<<rowData[1].toString();
m_name<<rowData[2].toString();
m_age<<rowData[3].toString();
}
qDebug() << m_id;
qDebug() << m_class;
qDebug() << m_name;
qDebug() << m_age;
}
用上一个博客生成的Excel,点击导入之后打印结果:
导入实验就做好了,如果数据量大就多开线程吧
下载链接,不过没别的东西:https://download.csdn.net/download/qq_41399894/11424016