qt 进程打开excel_Qt QAxObject操作excel文件过程总结(转):(示例代码)
正好同事问道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文件过程总结(转):(示例代码)相关推荐
- Qt QAxObject操作excel文件过程总结
最近由于需要Qt来操作Excel文件,所以想把QAxObject用起来,此次使用也是机缘巧合,记录了一下心路历程. 此前走了很多弯路,希望做同样事情的人就别纠缠于同样的错误就好. 配制方面: 1.确保 ...
- qt 进程打开excel_Qt 操作Excel
Qt对Excel的数据读/写操作没有现存的类,需要使用QAxObject,下面是从网上下载下来的一个封装好的类,感觉还可以,一般情况下够用,拿来给大家分享. 头文件: #ifndef EXCELENG ...
- 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. ...
- 姓名大全 导入mysql_根据项目类型导入Excel文件到不同数据库(示例代码)
前提:如果您要针对不同的业务做数据导入,可以参考下这个项目,这个项目的原理就是根据文件名进行区分,然后导入不同的数据表.下面我就写个Demo演示下: 学生表 -- 主键,学生姓名,学生年龄,学校归属 ...
- C#操作Excel文件(转)
摘要:本文介绍了Excel对象.C#中的受管代码和非受管代码,并介绍了COM组件在.net环境中的使用. 关键词:受管代码:非受管代码:Excel对象:动态连接库 引言 Excel是微软公司办公自动化 ...
- C#在客户端和服务端操作Excel文件
一.在客户端把数据导入到Excel文件步骤 1.创建Excel application对象,打开或生成Excel文件 //服务端创建StringBuilder对象 System.Text.St ...
- python处理excel表格实例-使用Python操作excel文件的实例代码
使用的类库 pip install openpyxl 操作实现 •工作簿操作 # coding: utf-8 from openpyxl import Workbook # 创建一个excel工作簿 ...
- c#如何操作excel文件、Interior.ColorIndex 色彩列表
创建.打开.读取.写入.保存的一般性代码: using System; using System.Reflection; // 引用这个才能使用Missing字段 namespace CExcel1 ...
- php删除excel文件,php操作excel文件的方法小结
php操作excel文件的方法小结 php操作excel文件的方法有哪些?就跟随百分网小编一起去了解下吧,想了解更多相关信息请持续关注我们应届毕业生考试网! 一.php,不用COM,生成excel文件 ...
最新文章
- C++库文件和头文件编写教程
- Linux的主要特性
- 5月23日 JavaScript
- 围剿Sci-Hub力度升级!全球最大学术出版商:网址你也不要提,不然就发律师函...
- python open ascii codec cant_解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误...
- Java黑皮书课后题第7章:**7.18(冒泡排序)使用冒泡排序算法编写一个排序方法。编写一个测试程序,读取10个double型的值,调用这个方法,然后显示排序好的数字
- java编写一个程序_计算已知长和宽的长方形的周长,请教一下大佬们,我们java留了一个作业,编写程序,定义一个接口Comput,声明计算周长和面积的方法...
- Unity 检测物体是否在相机视野范围内
- linux下挂载U盘的方法
- 软件常见出现缺陷的地方
- jsp页面中使用javascript获取后台放在request或session中的值
- matlab中的变换器,buck变换器介绍_buck变换器matlab仿真
- 编程实现二叉树的遍历
- JavaScript学习第一天——计算机基础导学(编程语言、计算机基础)
- 2021年PMP考试模拟题6(含答案解析)
- 字节后端开发工程师-基础架构 二面面经
- oracle中不等于怎么表示,sql语句不等于怎么表示
- ECCV 2022 | 超越MobileViT!EdgeFormer:学习ViT来改进轻量级卷积网络
- 从懵懂娃娃到社会行业大佬,这中间经历的过程的概括性思考
- 毕业设计-基于微信小程序的移动端轻量 GIS 系统