Qt 读取Execl表格数据

    QAxObject *excel = NULL;
    QAxObject *workbooks = NULL;
    QAxObject *workbook = NULL;
    excel = new QAxObject("Excel.Application");
    if (!excel){
        qDebug() << "EXCEL对象丢失!";
    }
    excel->dynamicCall("SetVisible(bool)", false);
    workbooks = excel->querySubObject("WorkBooks");
    workbook = workbooks->querySubObject("Open(QVariant, QVariant)", file);
    QAxObject * worksheet = workbook->querySubObject("WorkSheets(float)", 21);//打开第一个sheet
    QAxObject * usedrange = worksheet->querySubObject("UsedRange");//获取该sheet的使用范围对象
    QAxObject * rows = usedrange->querySubObject("Rows");
    QAxObject * columns = usedrange->querySubObject("Columns");
    int intRows = rows->property("Count").toInt();
    int intCols = columns->property("Count").toInt();

    // 批量载入数据,这里默认读取B13:C最后
    QString Range = "A2:LH" +QString::number(intRows);

    QAxObject *allEnvData = worksheet->querySubObject("Range(QString)", Range);
    QVariant allEnvDataQVariant = allEnvData->property("Value");
    QVariantList allEnvDataList = allEnvDataQVariant.toList();

    QVector<QVector<float>>tmpMat;
    for(int i=0; i<= intRows-2; i++)
    {
        QVariantList allEnvDataList_i =  allEnvDataList[i].toList();
        QVector<float>tmp;
        for (int var = 0; var < allEnvDataList_i.size(); ++var) {
            tmp.append(allEnvDataList_i[var].toFloat());
        }
        tmpMat.append(tmp);
    }
    workbooks->dynamicCall("Close()");

// 自行添加相应头文件   <QAxObject>    

// .pro 文件中添加 axcontainer,形如:QT += axcontainer

Qt框架中,可以使用QSpreadsheetModel和QTableView等组件来处理Excel(.xls或.xlsx)文件的数据。以下是一个简单的步骤来读取Excel数据: 1. **添加依赖**:首先,你需要包含Qt的`QtWidgets`模块,并安装支持读取Excel文件的插件,如`qsqlite`、`libxlsxwriter`或第三方库`QtAwesome`中的`fa-excel`图标(用于文件操作)。 ```cpp #include <QtWidgets> #include <QMessageBox> #include <QFileDialog> #include "QSpreadsheetModel.h" #include <QHeaderView> ``` 2. **打开文件**:通过`QFileDialog`让用户选择Excel文件,然后创建一个`QFile`对象并检查文件是否存在。 ```cpp QString fileName = QFileDialog::getOpenFileName(nullptr, tr("打开Excel文件"), "", tr("Excel Files (*.xls *.xlsx)")); if (fileName.isEmpty()) { QMessageBox::warning(nullptr, tr("错误"), tr("未选择文件")); return; } QFile file(fileName); if (!file.open(QIODevice::ReadOnly)) { QMessageBox::critical(nullptr, tr("错误"), tr("无法打开文件: %1").arg(file.errorString())); return; } ``` 3. **创建模型**:使用`QSpreadsheetModel`来加载文件内容。 ```cpp QSpreadsheetModel spreadsheetModel(&file); if (!spreadsheetModel.read(fileName)) { // 如果读取失败,显示错误信息 QMessageBox::critical(nullptr, tr("错误"), tr("无法解析文件: %1").arg(spreadsheetModel.lastError().text())); return; } ``` 4. **绑定到表格视图**:将模型关联到`QTableView`上,设置列标题可见。 ```cpp QTableView tableView; tableView.setModel(&spreadsheetModel); QHeaderView *header = tableView.horizontalHeader(); header->setStretchLastSection(true); // 自动调整最后一列大小 ``` 5. **显示数据**:显示表格视图给用户。 ```cpp tableView.show(); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值