QT操作Excel

这篇具有很好参考价值的文章主要介绍了QT操作Excel。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在具体操作之前,我们先了解一下excel的层次结构,如图所示,Application对象–>Workbook对象–>Worksheet对象–>Range对象。
1个excel有一个Application对象,1个Application对象有多个workbook对象组成,这些workbook对象由workbooks对象统一管理,workbook对象下包含若干个worksheet,这些worksheet对象由worksheets对象统一管理,worksheet下面的range对象,对应这worksheet里面的表格单元了。
2.具体的操作流程如下:

QAxWidget excel(“Excel.Application”);

1) 显示当前窗口:
excel.setProperty(“Visible”, true);
2) 更改 Excel 标题栏:
excel.setProperty(“Caption”, “Invoke Microsoft Excel”);
3) 添加新工作簿:
QAxObject * workbooks = excel.querySubObject(“WorkBooks”);
workbooks->dynamicCall(“Add”);
4) 打开已存在的工作簿:
workbooks->dynamicCall(Open (const QString&), QString(“c:/test.xls”));
5) 获取活动工作簿:
QAxObject * workbook = excel.querySubObject(“ActiveWorkBook”);
6) 获取所有的工作表:
QAxObject * worksheets = workbook->querySubObject(“WorkSheets”);
7) 获取工作表数量:
int intCount = worksheets->property(“Count”).toInt();
8) 获取第一个工作表:
QAxObject * worksheet = workbook->querySubObject(Worksheets(int), 1);
9) 获取cell的值:
QAxObject * range = worksheet->querySubObject(Cells(int,int), 1, 1 );

3.新建

void ExcelHelper::NewExcel(const QString &fileName)
{

	QFile file(fileName);
	if (file.exists()) {
        m_pWorkBook = m_pWorkBooks->querySubObject("Open(const QString &)", fileName);
	}
	else {
		m_pWorkBooks->dynamicCall("Add");
        m_pWorkBook = m_pApplication->querySubObject("ActiveWorkBook");
        m_pWorkBook->dynamicCall("SaveAs (const QString&)", fileName);
	}

    m_pWorkBook->dynamicCall("Close (Boolean)", false);
    m_pApplication->dynamicCall("Quit (void)");
}

4.打开

void ExcelHelper::OpenExcel(const QString &fileName)
{
    m_pWorkBooks->dynamicCall("Open (const QString&)", fileName);
    QAxObject * workbook = m_pApplication->querySubObject("ActiveWorkBook");
    QAxObject * worksheets = workbook->querySubObject("WorkSheets");
    int intCount = worksheets->property("Count").toInt();
    QAxObject * worksheet = workbook->querySubObject("Worksheets(int)", 1);
    QAxObject * usedrange = worksheet->querySubObject("UsedRange");
    QAxObject * rows = usedrange->querySubObject("Rows");
    QAxObject * columns = usedrange->querySubObject("Columns");
    int intRowStart = usedrange->property("Row").toInt();
    int intColStart = usedrange->property("Column").toInt();
    int intCols = columns->property("Count").toInt();
    int intRows = rows->property("Count").toInt();
    for (int i = intRowStart; i < intRowStart + intRows; i++)
    {
        for (int j = intColStart; j <= intColStart + intCols; j++)
        {
            QAxObject * range = worksheet->querySubObject("Cells(int,int)", i, j );
            qDebug() << i << j << range->property("Value");
        }
    }
    m_pApplication->setProperty("DisplayAlerts", 0);
    workbook->dynamicCall("SaveAs (const QString&)", QDir::toNativeSeparators("c:/xlsbyqt.xls"));
    m_pApplication->setProperty("DisplayAlerts", 1);
    workbook->dynamicCall("Close (Boolean)", false);
    m_pApplication->dynamicCall("Quit (void)");
}

5.使用

pExcelHelper->OpenExcel(QString("D:/test.xlsx"));
pExcelHelper->NewExcel(QString("D:\\test1.xlsx"));

6.注意新建和打开时的路径写法文章来源地址https://www.toymoban.com/news/detail-506202.html

到了这里,关于QT操作Excel的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT使用QXlsx实现数据验证与Excel公式操作 QT基础入门【Excel的操作】

     准备环境:QT中使用QtXlsx库的三种方法 1、公式操作写单行公式

    2024年02月10日
    浏览(26)
  • QT使用QXlsx实现对Excel sheet的相关操作 QT基础入门【Excel的操作】

     准备环搭:QT中使用QtXlsx库的三种方法 1、查询打开的Excel中所有可用的工作表(Sheet)名称 功能说明:  查询Excel中所有的工作表(Sheet)名称; 返回值:  所有工作表的名称列表;

    2024年02月11日
    浏览(32)
  • QT操作Excel

    在具体操作之前,我们先了解一下excel的层次结构,如图所示,Application对象–Workbook对象–Worksheet对象–Range对象。 1个excel有一个Application对象,1个Application对象有多个workbook对象组成,这些workbook对象由workbooks对象统一管理,workbook对象下包含若干个worksheet,这些worksheet对象

    2024年02月11日
    浏览(34)
  • qt对excel的基本操作

    1.1 配置方面 ​ ① 确保Excel软件在本地服务器注册成功,没注册成功的可以通过 在运行中\\\"E:program FilesMicrosoft OfficeOffice12EXCEL.EXE\\\" /regserver 手动注册,注意路径要用自己的excel路径。 ​ ② 确保组件配制正确,运行命令:dcomcnfg,查看DCOM配置下是否有Microsoft Excel Application,有

    2024年02月04日
    浏览(22)
  • QT 使用第三方库QtXlsx操作Excel表

    一直以来,都想学习一下C/C++如何操作excel表,在网上调研了一下,觉得使用C/C++去操作很麻烦,遂转向QT这边;QT有一个自带的类 QAxObject ,可以使用他去操作,但随着了解的深入,觉得他并不是很好,有很多其他缺陷(例如必须电脑安装了办公软件才可以进行操作等),所以继

    2024年02月15日
    浏览(29)
  • QT中使用QtXlsx库的三种方法 QT基础入门【Excel的操作】

    对于Linux用户,如果Qt是通过“ apt-get”之类的软件包管理器工具安装的,请确保已安装Qt5开发软件包qtbase5-private-dev QtXlsx是一个可以读写Excel文件的库。它不需要Microsoft Excel,可以在Qt5支持的任何平台上使用。该库可用于从头开始生成新的.xlsx文件从现有.xlsx文件中提取数据编

    2024年02月12日
    浏览(34)
  • TeamView: 为了进一步增强安全性,在发起连接之前,我们希望您先验证您的账户

    TeamViewPC端远程连接另外一台电脑 弹出窗口:为了进一步增强安全性,在发起连接之前,我们希望您先验证您的账户 电脑浏览器自动跳转到手机号验证页面,输入正确的手机号后,点击验证却一直提示 手机号无效、手机号未知等异常。 复制验证链接到手机 https://login.teamviewer.

    2024年02月14日
    浏览(51)
  • 关于连锁,我们与ChatGPT的聊了一下

    下文内容为编者与ChatGPT的实际对话并附对话截图。对话内容为与连锁相关的问答以及建议咨询。内容仅供参考! ChatGPT相较于2020年推出即被遗忘的Chat3,最明显区别亦是本次出圈核心原因的一点在于交互界面——即对话框,而内容仍在接受使用者的考量与训练。对话如下:

    2024年02月01日
    浏览(31)
  • Docker学习之前需要了解的几个概念

    1.1. 命名空间(Namespaces) 命名空间是Linux内核提供的资源隔离机制,它通过创建多个独立的 全局视图 ,使得在不同命名空间中的进程可以拥有各自独立且互不干扰的系统资源。每个命名空间提供了一种逻辑上的隔离效果,让进程看到的是一个受限或定制化的环境,而非整个

    2024年01月23日
    浏览(48)
  • 今天我们来浅谈一下ChatGPT到底是什么东西

    这是一篇非学术专业性的文章,而我也是为了解chatGPT而学了两三天人工智能,所以哪里写的不好的不对的地方还希望海涵。 图灵测试 1950年,人工智能之父艾伦·图灵提出乐“图灵测试”。就是说当你在不面对面的时候跟机器人进行文字聊天的时候,如果你很难分辨出来对方

    2023年04月09日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包