void DlgWave::getExcelContent(QVector<QVector<QString>> &map)
{
QAxObject *excel = NULL;
QAxObject *workbooks = NULL;
QAxObject *workbook = NULL;
QString filePath = QFileDialog::getOpenFileName(
this, QStringLiteral("选择Excel文件"),"",
QStringLiteral("Excel file(*.xls *.xlsx)"));
if(filePath.isEmpty())return;
CoInitializeEx(NULL, COINIT_MULTITHREADED);
excel = new QAxObject("Excel.Application");
if(!excel)
{
qDebug()<<"EXCEL 对象丢失!";
}
workbooks = excel->querySubObject("Workbooks");//所有excel文件
if(0==workbooks)
{
qDebug()<<"Kong000000000";
return;
}
workbook = workbooks->querySubObject("Open (const QString &)",filePath);//按路径获取文件
if(0==workbook)
{
qDebug()<<"workbook000000000";
return;
}
QAxObject *worksheet = workbook->querySubObject("WorkSheets(int)", 1);//读取第一个表
QAxObject *usedRange = worksheet->querySubObject("UsedRange");//有数据的矩形区域
QAxObject * rows = usedRange->querySubObject("Rows");
QAxObject * columns = usedRange->querySubObject("Columns");
intRows = rows->property("Count").toInt();
intCols = columns->property("Count").toInt();
//qDebug()<<"行数:"<<intRows;
//qDebug()<<"列数:"<<intCols;
QVariant var = usedRange->dynamicCall("Value");
foreach (QVariant varRow, var.toList())
{
QVector<QString> vecDataRow;
foreach(QVariant var, varRow.toList())
{
vecDataRow.push_back(var.toString());
}
map.push_back(vecDataRow);
}
workbook->dynamicCall("Close()");
excel->dynamicCall("Quit()");
if(excel)
{
delete excel;
excel = NULL;
}
}
利用QT获取excel文件中的数据
最新推荐文章于 2024-04-17 20:33:40 发布