Qt操作表格


一、使用QAxObject

1.环境配置

首先在Qt Modules中引入axserver;axcontainer;
在这里插入图片描述
代码中包含相关头文件#include <QAxObject>
头文件

public:
	void OpenExcel(const QString& strExcelPath);
    void AddNewExcel();
    void SaveAndClose(const QString& strExcelPath);
    int GetRowsCount();
    QString GetCell(int row, int column);
    QString GetCell(QString numer);
    void SetCell(int row, int column, QString value);
    void SetCell(QString number, QString value);
    void SetCellColor(int row, int column, QColor color);
private:
	QAxObject* m_pExcel;
    QAxObject* m_pWorkBooks;
    QAxObject* m_pWorkBook;
    QAxObject* m_pWorkSheets;
    QAxObject* m_pWorkSheet;

cpp文件

// 打开已有的excel
void MainWindow::OpenExcel(const QString & strExcelPath)
{
    // 连接excel 控件
    m_pExcel = new QAxObject("Excel.Application");
    // m_pExcel->setControl("Excel.Applicatio");

    // 设置操作excel时不打开excel窗体
    m_pExcel->dynamicCall("SetVisible(bool Visible)", false);

    // 设置不显示任何警告信息
    m_pExcel->setProperty("DisplayAlert", false);

    // 获取当前工作簿
    m_pWorkBooks = m_pExcel->querySubObject("WorkBooks");
    // 打开指定工作簿
    m_pWorkBook = m_pWorkBooks->querySubObject("Open(const QString&)", strExcelPath);

    if (m_pWorkBook)
    {
        qDebug() << "Open Excel Success!";
    }

    // 获取sheets
    m_pWorkSheets = m_pWorkBook->querySubObject("Sheets");
    // 获取某个sheet
    m_pWorkSheet = m_pWorkSheets->querySubObject("Item(int)", 1);
}

// 创建新的Excel
void MainWindow::AddNewExcel()
{
    // 获取当前工作簿
    m_pWorkBooks = m_pExcel->querySubObject("WorkBooks");

    m_pWorkBooks->dynamicCall("Add");
    m_pWorkBook = m_pExcel->querySubObject("ActiveWorkBook");
    m_pWorkSheets = m_pWorkBook->querySubObject("Sheets");
    m_pWorkSheet = m_pWorkSheets->querySubObject("Item(int)", 1);
}

// 保存并关闭Excel
void MainWindow::SaveAndClose(const QString& strExcelPath)
{
    // 保存文件,一定要将路径中的'/'转为'\\',前者只能被Qt识别
    m_pWorkBook->dynamicCall("SaveAs(const QString&)", QDir::toNativeSeparators(strExcelPath));
    // 关闭文件
    m_pWorkBook->dynamicCall("Close(Boolean)", false);
    // 关闭excel
    m_pExcel->dynamicCall("Quit()");
    delete m_pExcel;
    m_pExcel = nullptr;
}

// 获取行数
int MainWindow::GetRowsCount()
{
    int iRows = 0;
    QAxObject* pRows = m_pWorkSheet->querySubObject("Rows");
    iRows = pRows->property("Count").toInt();
    return  iRows;
}

// 获取单元格内容,行号+列号
QString MainWindow::GetCell(int row, int column)
{
    QAxObject* pCell = m_pWorkSheet->querySubObject("Range(int, int)", row, column);
    return  pCell->property("Value").toString();
}

// 获取单元格内容,单元格标号如: A1,C5
QString MainWindow::GetCell(QString number)
{
    QAxObject* pCell = m_pWorkSheet->querySubObject("Range(QString)", number);
    return  pCell->property("Value").toString();
}

// 设置单元格内容,行号+列号
void MainWindow::SetCell(int row, int column, QString value)
{
    QAxObject* pCell = m_pWorkSheet->querySubObject("Cells(int, int)", row, column);
    pCell->setProperty("Value", value);
}

// 设置单元格内容,单元格标号如: A1,C5
void MainWindow::SetCell(QString number, QString value)
{
    QAxObject* pCell = m_pWorkSheet->querySubObject("Cells(QString)", number);
    pCell->setProperty("Value", value);
}

// 设置单元格颜色的方式与设置值的方式一样,都是先获取到单元格,再设置属性
void MainWindow::SetCellColor(int row, int column, QColor color)
{
    QAxObject* pCell = m_pWorkSheet->querySubObject("Cells(int, int)", row, column);
    QAxObject* pInterior = pCell->querySubObject("Interior");
    pInterior->setProperty("Color", color);
}

二、使用QXlsx

推荐两个网站
QT 使用第三方库QtXlsx操作Excel表
Qt Xlsx使用教程
生成动态库的资源文件
QXlsx模块源文件及编译后的文件

复制编译后的文件到本地路径,参考网址:毓树麟风——Qt5下Qxlsx模块安装及使用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值