正好同事问道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 进程打开excel_Qt QAxObject操作excel文件过程总结(转):(示例代码)相关推荐

  1. Qt QAxObject操作excel文件过程总结

    最近由于需要Qt来操作Excel文件,所以想把QAxObject用起来,此次使用也是机缘巧合,记录了一下心路历程. 此前走了很多弯路,希望做同样事情的人就别纠缠于同样的错误就好. 配制方面: 1.确保 ...

  2. qt 进程打开excel_Qt 操作Excel

    Qt对Excel的数据读/写操作没有现存的类,需要使用QAxObject,下面是从网上下载下来的一个封装好的类,感觉还可以,一般情况下够用,拿来给大家分享. 头文件: #ifndef EXCELENG ...

  3. hibernate+servlet+mysql 实现easypoi_在Maven项目中使用easypoi完成Excel文件上传下载(示例代码)...

    导包: 1 2 3 cn.afterturn 4 easypoi-base 5 3.2.0 6 7 8 cn.afterturn 9 easypoi-web 10 3.2.0 11 12 13 cn. ...

  4. 姓名大全 导入mysql_根据项目类型导入Excel文件到不同数据库(示例代码)

    前提:如果您要针对不同的业务做数据导入,可以参考下这个项目,这个项目的原理就是根据文件名进行区分,然后导入不同的数据表.下面我就写个Demo演示下: 学生表 -- 主键,学生姓名,学生年龄,学校归属 ...

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

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

  6. C#在客户端和服务端操作Excel文件

    一.在客户端把数据导入到Excel文件步骤 1.创建Excel application对象,打开或生成Excel文件 //服务端创建StringBuilder对象     System.Text.St ...

  7. python处理excel表格实例-使用Python操作excel文件的实例代码

    使用的类库 pip install openpyxl 操作实现 •工作簿操作 # coding: utf-8 from openpyxl import Workbook # 创建一个excel工作簿 ...

  8. c#如何操作excel文件、Interior.ColorIndex 色彩列表

    创建.打开.读取.写入.保存的一般性代码: using System; using System.Reflection; // 引用这个才能使用Missing字段 namespace CExcel1 ...

  9. php删除excel文件,php操作excel文件的方法小结

    php操作excel文件的方法小结 php操作excel文件的方法有哪些?就跟随百分网小编一起去了解下吧,想了解更多相关信息请持续关注我们应届毕业生考试网! 一.php,不用COM,生成excel文件 ...

最新文章

  1. C++库文件和头文件编写教程
  2. Linux的主要特性
  3. 5月23日 JavaScript
  4. 围剿Sci-Hub力度升级!全球最大学术出版商:网址你也不要提,不然就发律师函...
  5. python open ascii codec cant_解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误...
  6. Java黑皮书课后题第7章:**7.18(冒泡排序)使用冒泡排序算法编写一个排序方法。编写一个测试程序,读取10个double型的值,调用这个方法,然后显示排序好的数字
  7. java编写一个程序_计算已知长和宽的长方形的周长,请教一下大佬们,我们java留了一个作业,编写程序,定义一个接口Comput,声明计算周长和面积的方法...
  8. Unity 检测物体是否在相机视野范围内
  9. linux下挂载U盘的方法
  10. 软件常见出现缺陷的地方
  11. jsp页面中使用javascript获取后台放在request或session中的值
  12. matlab中的变换器,buck变换器介绍_buck变换器matlab仿真
  13. 编程实现二叉树的遍历
  14. JavaScript学习第一天——计算机基础导学(编程语言、计算机基础)
  15. 2021年PMP考试模拟题6(含答案解析)
  16. 字节后端开发工程师-基础架构 二面面经
  17. oracle中不等于怎么表示,sql语句不等于怎么表示
  18. ECCV 2022 | 超越MobileViT!EdgeFormer:学习ViT来改进轻量级卷积网络
  19. 从懵懂娃娃到社会行业大佬,这中间经历的过程的概括性思考
  20. 毕业设计-基于微信小程序的移动端轻量 GIS 系统

热门文章

  1. Hadoop Yarn任务优先级(作业优先级、应用优先级)设置
  2. 关于linux分区与挂载的解释
  3. 详解Scala与Java的互动
  4. k8s修改端口访问:nodeport暴露的端口范围修改
  5. MySQL索引相关的数据结构和算法
  6. Linux 用户组相关命令
  7. Lucene实现全文检索的流程
  8. Spring MVC--使用Jackson返回JSON格式数据
  9. Scala高阶函数详解
  10. Spring配置C3P0开源连接池