正好同事问道Qt下操作excel. 转自:http://blog.csdn.net/a156392343/article/details/48092515

  

配制方面:

1、确保Excel软件在本地服务器注册成功,没注册成功的可以通过 在运行中"E:\program Files\Microsoft Office\Office12\EXCEL.EXE" /regserver 手动注册,注意路径要用自己的excel路径。

2、确保组件配制正确,运行命令:dcomcnfg,查看DCOM配置下是否有Microsoft Excel Application,有的话万事大吉,开始设置(1)常规,身份验证:无(2)安全、配制权限自定义,控制权限,完全控制选中,保存

以上确保QAxObject可以正常被调用

程序方面:

1、工程pro文件添加

CONFIG += qaxcontainer

2、.h文件添加

      	 /1./打开
	void newExcel(const QString &fileName);

       //2.增加1个Worksheet
       void appendSheet(const QString &sheetName,int cnt);

       //3.向Excel单元格中写入数据
       void setCellValue(int row, int column, const QString &value);

       //4.保存Excel
      void saveExcel(const QString &fileName);

       //5.释放Excel
       void  freeExcel();

3、.cpp文件

//1.新建一个excel
void MainWindow::newExcel(const QString &fileName)
{        HRESULT r = OleInitialize(0);
         CoInitialize(0);
         if (r != S_OK && r != S_FALSE) {
             qWarning("Qt: Could not initialize OLE (error %x)\n", (unsigned int)r);
         }
         pApplication = new QAxObject("Excel.Application");
              if(pApplication == NULL){
                  qWarning("pApplication\n");return;
              }
    pApplication->dynamicCall("SetVisible(bool)", false);//false不显示窗体
    pApplication->setProperty("DisplayAlerts", false);//不显示任何警告信息。
    pWorkBooks = pApplication->querySubObject("Workbooks");
    QFile file(fileName);
    if (file.exists())
    {
        pWorkBook = pWorkBooks->querySubObject("Open(const QString &)", fileName);
    }
    else
    {
         pWorkBooks->dynamicCall("Add");
         pWorkBook = pApplication->querySubObject("ActiveWorkBook");
    }
    pSheets = pWorkBook->querySubObject("Sheets");
    pSheet = pSheets->querySubObject("Item(int)", 1);
}
//2.增加1个Worksheet
void MainWindow::appendSheet(const QString &sheetName,int cnt)
{
    QAxObject *pLastSheet = pSheets->querySubObject("Item(int)", cnt);
    pSheets->querySubObject("Add(QVariant)", pLastSheet->asVariant());
    pSheet = pSheets->querySubObject("Item(int)", cnt);
    pLastSheet->dynamicCall("Move(QVariant)", pSheet->asVariant());
    pSheet->setProperty("Name", sheetName);
}
//3.向Excel单元格中写入数据
void MainWindow::setCellValue(int row, int column, const QString &value)
{
    QAxObject *pRange = pSheet->querySubObject("Cells(int,int)", row, column);
    pRange->dynamicCall("Value", value);
}
//4.保存Excel
void MainWindow::saveExcel(const QString &fileName)
{
    pWorkBook->dynamicCall("SaveAs(const QString &)",
    QDir::toNativeSeparators(fileName));
}
//5.释放Excel
void  MainWindow::freeExcel()
{
    if (pApplication != NULL)
    {
        pApplication->dynamicCall("Quit()");
        delete pApplication;
        pApplication = NULL;
    }
}

附上测试的button槽函数

void MainWindow::on_pushButton_keting_clicked()
{

OleInitialize(0);

QString fileNametmp = "d:/112.xls"; //文件名可从此处修改
    newExcel(fileNametmp);
   // appendSheet("page1");
    setCellValue(3, 3,"34343");
    setCellValue(3, 6,"55555");
    saveExcel(fileNametmp);
    freeExcel();
    return;
}

Qt QAxObject操作excel文件过程总结(转):的更多相关文章

  1. Java生成和操作Excel文件(转载)

    Java生成和操作Excel文件   JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该A ...

  2. Java生成和操作Excel文件

    JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过 ...

  3. java 操作excel 文件

    JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过 ...

  4. C#操作Excel文件(转)

    摘要:本文介绍了Excel对象.C#中的受管代码和非受管代码,并介绍了COM组件在.net环境中的使用. 关键词:受管代码:非受管代码:Excel对象:动态连接库 引言 Excel是微软公司办公自动化 ...

  5. python3:操作excel文件

    前提:自动化接口测试中,可以将用例放在excel中管理.结合实际情况讲解如何操作excel文件 1.安装xlrd:pip install xlrd 2.导入模块:import xlrd 3.打开Exc ...

  6. C#项目中操作Excel文件——使用NPOI库

    转载自:http://blog.csdn.net/dcrmg/article/details/52356236# 感谢-牧野- 实际C#项目中经常会涉及到需要对本地Excel文件进行操作,特别是一些包 ...

  7. [转载]Java操作Excel文件的两种方案

    微软在桌面系统上的成功,令我们不得不大量使用它的办公产品,如:Word,Excel.时至今日,它的源代码仍然不公开已封锁了我们的进一步应用和开发.在我们实际开发企业办公系统的过程中,常常有客户这样子要 ...

  8. 转帖 Java生成和操作Excel文件

    JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过 ...

  9. (转载)Java生成和操作Excel文件

    JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过 ...

随机推荐

  1. RDF和Jena RDF API简介

    这是官方文章<An Introduction to RDF and the Jena RDF API>的译文.原文是在刺猬的温驯这里看到的.其中的图片没法显示了,还有一段丢失了.于是我在此 ...

  2. Win7 下IIS(7.5)发布 ASP.NET MVC

    操作系统 Win 7 旗舰版 开发工具 VS2015 使用技术 IIS7.5 + MVC4.0 一 . 在IIS上部署程序后出现错误-当前标识(NT AUTHORITY/NETWORK SERVICE ...

  3. github代码收集推荐

    https://github.com/AFNetworking/AFNetworkinghttps://github.com/jessesquires/JSQMessagesViewControlle ...

  4. OGG for DB2 z/OS 12.2版本发布

    2016-04-15 Oracle发布了GoldenGate for DB2 z/OS  12.2.0.1.2.可以从OTN或eDelivery下载,该版本是ogg for DB2 z/OS的第一个1 ...

  5. <input type="file">火狐兼容

    <input type="file">放着a标签下火狐不兼容 <a href=""><input type="file& ...

  6. STM32系列单片机IO口模式设置

    STM32单片机的每组IO口都有4个32位配置寄存器用于配置GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR和GPIOx_PUPDR,2个32位数据寄存器用于配置输入和 ...

  7. C#窗体无法接受Keydown事件

    问题一描述:当新建一个窗体时,添加KeyDown事件后,会正常处理,但是当添加有控件时,比如Button,TextBox,不会触发窗体的KeyDown事件,也没有调用KeyDown事件的处理程序. 原 ...

  8. 解决 emulator-5554 disconnected! Cancelling

    在命令行状态下: adb kill-server ---再adb start-server:

  9. Windows7+VS2010下OpenGL的环境配置

    http://johnhany.net/2014/01/environment-for-opengl-with-vs2010/ OpenGL(Open Graphics Library)是一个开放的. ...

  10. linux一些常用命令

    本人是linux小白,因项目接触linux不久,收集了一些常用的linux命令,希望对后来者有用. --列出/var/data目录下按A-Z字母排序的前100个文件ls /var/data |sort ...