image.png

    1. QString strFilePathName = QFileDialog::getOpenFileName(this,QStringLiteral("选择Excel文件"),"",tr("Exel file(*.xls *.xlsx)"));
    2. if(strFilePathName.isNull())
    3. {
    4. return ;
    5. }
    6. QAxObject *excel = new QAxObject(this); //连接Excel控件
    7. if (excel->setControl("Excel.Application"))
    8. {
    9. }
    10. else
    11. {
    12. excel->setControl("ket.Application"); //连接Excel控件
    13. }
    14. excel->setProperty("Visible", false); //不显示窗体
    15. QAxObject* workbooks = excel->querySubObject("WorkBooks"); //获取工作簿集合
    16. workbooks->dynamicCall("Open(const QString&)", strFilePathName); //打开打开已存在的工作簿
    17. QAxObject* workbook = excel->querySubObject("ActiveWorkBook"); //获取当前工作簿
    18. QAxObject* sheets = workbook->querySubObject("Sheets"); //获取工作表集合,Sheets也可换用WorkSheets
    19. QAxObject* sheet = workbook->querySubObject("WorkSheets(int)", 1);//获取工作表集合的工作表1,即sheet1
    20. QAxObject* range = sheet->querySubObject("UsedRange"); //获取该sheet的使用范围对象
    21. QVariant var = range->dynamicCall("Value");
    22. delete range;
    23. QVariantList varRows = var.toList(); //得到表格中的所有数据
    24. if(varRows.isEmpty())
    25. {
    26. return;
    27. }
    28. const int rowCount = varRows.size();
    29. QStringList column1,column2,column3;
    30. for(int i = 0; i < rowCount; ++i) //
    31. {
    32. QVariantList rowData = varRows[i].toList();
    33. column1<<rowData[0].toString();
    34. column2<<rowData[1].toString();
    35. column3<<rowData[2].toString();
    36. }
    37. qDebug() << "-----column1-------";
    38. for (auto &iter1:column1)
    39. {
    40. qDebug() << iter1;
    41. }
    42. qDebug() << "-----column2-------";
    43. for (auto &iter2:column2)
    44. {
    45. qDebug() << iter2;
    46. }
    47. qDebug() << "-----column3-------";
    48. for (auto &iter3:column3)
    49. {
    50. qDebug() << iter3;
    51. }