qt打开xls文件_Qt操作Excel

以下代码是在Qt Creator里创建的工程

Qt操作excel依赖QAxObject

注意事项:

配置xxx.pro

引入Active Qt库

QT += axcontainer

引入objbase.h,解决返回QAxObject为空的问题

#include

//在需要创建QAxObject()上方调用如下代码

CoInitializeEx(NULL, COINIT_MULTITHREADED);

m_pExcel = new(std::nothrow) QAxObject();

因为QAxObject默认是在单线程下使用的,因此如果不用上门代码申明多线程, 会导致获取的excel的QAxObject都是NULL

保存或者打开excel的路径需要统一用"\"

用QDir::toNativeSeparators(m_strPath)进行转换

m_pWorkbook->dynamicCall("SaveAs(const QString&)", QDir::toNativeSeparators(m_strPath));

SaveAs必须在所有操作结束后调用,否则不会保存到excel中

可以放到close前调用即可

m_pWorkbook->dynamicCall("SaveAs(const QString&)", QDir::toNativeSeparators(m_strPath));

m_pWorkbook->dynamicCall("Close()");

m_pExcel->dynamicCall("Quit()");

delete m_pExcel;

m_pExcel = NULL;

Demo

#ifndef EXCELOPERATOR_H

#define EXCELOPERATOR_H

#include

#include

#include

#include

class ExcelOperator : public QObject

{

Q_OBJECT

public:

explicit ExcelOperator(QObject *parent = nullptr);

~ExcelOperator();

//打开文件

bool open(QString path);

//关闭文件

bool close();

//获取工作表数量

int getSheetsCount();

//根据名称创建工作表

QAxObject* addSheet(QString name);

//根据名称删除工作表

bool delSheet(QString name);

//根据编号删除工作表

bool delSheet(int index);

//根据名称获取工作表

QAxObject* getSheet(QString name);

//根据编号获取工作表

QAxObject* getSheet(int index);

//获取行对象

QAxObject* getRows(QAxObject* pSheet);

//获取行数

int getRowsCount(QAxObject* pSheet);

//获取列对象

QAxObject* getColumns(QAx

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值