读取Excel表格

读取一个Excel表格
显示在listview中(listview显示方法)

1.下面是获取excel的方法,但是此方法有一点不适合是因为速度特别慢

void Widget::ScanFile(QString strPath, QString strText)
{
    QAxObject *excel = new QAxObject(this);
    excel->setControl("Excel.Application");     //链接Excel控件
    excel->setProperty("Visible", true);       //显示Excel窗口看效果
    /*********获取COM文件的一种方式************/
    QAxObject *workbooks = excel->querySubObject("WorkBooks");
    //获取工作簿(excel文件)集合
    workbooks->dynamicCall("Open(const QString&)", strPath);//path至关重要,获取excel文件的路径
    //打开一个excel文件
    QAxObject *workbook = excel->querySubObject("ActiveWorkBook");
    QAxObject *worksheets = workbook->querySubObject("WorkSheets");
    int iWorkSheet = worksheets->property("Count").toInt();   //获取sheet的数量
    /*********获取COM文件的一种方式************/

2.下面是获取excel表格的行列信息代码

    QAxObject *worksheet = workbook->querySubObject("WorkSheets(int)",i);//("WorkSheets(int)",1)访问excel中的工作表中第一个单元格
    QAxObject *usedRange = worksheet->querySubObject("UsedRange");//第一页sheet的范围(必须和上一行匹配)
    QAxObject *rows, *columns;
    rows = usedRange->querySubObject("Rows");//行
    columns = usedRange->querySubObject("Columns");//列
    int intRow = rows->property("Count").toInt();//行数
    int intCol = columns->property("Count").toInt();//列数
    QAxObject *strRange = worksheet->querySubObject("Cells(int, int)", j, 1);  //获取对应行列的值
    QString str = strRange->dynamicCall("Value2()").toString();

3.QAxObject打开excel后要记得关闭,不然会在系统产生很多EXCEL.EXE进程

    workbook->dynamicCall("Close()");
    excel->dynamicCall("Quit()");
    if (excel)
    {
        delete excel;
        excel = NULL;
    }
    return ;

4.下面是listview的用法,包括list容器(QStandardItem,setModel)

	QString strTar;
    QStandardItemModel *model = new QStandardItemModel(this);
    QList<QStandardItem *> list;
    list.push_back(new QStandardItem(strTar));
    model->appendRow(list);
    ui->m_lvResult->setModel(model);

更快速的方法参考:qt快速读取excel
Qt快速读取数据量很大的Excel文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值