多线程下QAxObject指针为NULL的解决办法

项目中需要对Excel进行操作,把数据中的数据写入到Excel文件中。在数据量大的情况下,操作Excel是一件费时的操作。

但是执行到下列代码时就会出现空指针的情况:

1 QAxObject *excel = new QAxObject("Excel.Application");
2 excel->setProperty("Visible", false);
3
4 QAxObject *workbooks = excel->querySubObject("WorkBooks");

第四行返回的workbooks指针是一个空指针,无法进行向下的Excel操作。这是因为QAxObject对象是默认在单线程下使用,

解决这个问题需要一个初始化函数,指定在多线程下可以使用QAxObject 指针。

1 #include <ObjBase.h>
2
3 CoInitializeEx(NULL, COINIT_MULTITHREADED);
4 QAxObject *excel = new QAxObject("Excel.Application");
5 excel->setProperty("Visible", false);
6
7 QAxObject *workbooks = excel->querySubObject("WorkBooks");

这样就可以解决上面的空指针问题。

时间: 2024-08-09 22:00:20

多线程下QAxObject指针为NULL的解决办法的相关文章

java--struts--result is null的解决办法

一般情况下如果出现连续跳转的时候,经常会出现result is null的问题,这主要是由于action的type默认类型redirect导致的, 我们只需要在出错的action中指定type="chain"即可. 例如: (一般写法:用于同一命名空间的action之间跳转时) <span style="font-size:18px;"> <!-- 跳转到命名空间/admin --> <action name="toAdmin

html页面顶部出现一段空白,检查控制台发现body 下出现&amp;#65279字符,原因及解决办法

html页面顶部出现一段空白,检查控制台发现body 下出现&#65279字符,原因及解决办法 分析: 原来是页面编码时增加了BOM,此页面后端数据主要是PHP语言,对PHP来讲PHP在设计时没有考虑BOM问题,,不会忽略UTF-8编码的文件开头BOM的那三个字符,会把BOM作为该文件开头正文的一部分.由于必须在<?或者<?php后面的代码才会作为PHP代码执行,所以将会造成在页面上输出这三个字符,显示效果就要看浏览器了,一般是一个空行或是一个乱码.由于在html一开头有这3个字符的存

windows下mysql忘记root密码的解决办法

今天早上 一朋友说自己的mysql 忘记root密码了 让我帮忙给看看,因为没有接触过mysql 所以从网上找了一下信息经我亲身实践  已经成功!mysql版本是5.1以下是从网上找的信息: 1. 首先检查mysql服务是否启动,若已启动则先将其停止服务,可在开始菜单的运行,使用命令: net stop mysql 打开第一个cmd1窗口,切换到mysql的bin目录,运行命令: mysqld --defaults-file="C:\Program Files\MySQL\MySQL Serve

Android项目中gen文件下R文件无法生成的解决办法

帮一个网友解决R文件无法生成的问题,搜集了些材料特整理如下,初学者参考他人代码时极易出现此种问题,一般都是xml文件出错,无法被正确解析. gen目录无法更新,或者gen目录下的R.JAVA文件无法生成 1.gen目录的用处 android gen目录下的R.java并不是由用户创建,而是android工程本身将android的资源进行自动"编号"(ID)值. 2.gen目录下R文件无法更新/生成的原因 1)res目录下的layout下的xml文件名有错.按照android的命名规范是

asp.net 项目在 IE 11 下出现 “__doPostBack”未定义 的解决办法

最近项目在 IE 11 下<asp:LinkButton> 点击出现 “__doPostBack”未定义”,经过一番google,终于知道了原因:ASP.NET 可能无法辨识出一些浏览器的最新版本,还会经常把它们看做是低级的浏览器.(也就是: 不支持JavaScript.) 详见: http://blogs.msdn.com/b/scott_hanselman/archive/2011/10/28/asp-net-ie10-dopostback-javascript-ff5.aspx本人按照该

windows和linux下读取文件乱码的终极解决办法!

乱码是个很恶心的问题. windows和linux读取txt文件,一旦读取了,编码发生改变,就无法再还原了,只有重启项目. 网上有很多方法都是读取文件头,方法很好,但是亲测都不能用(右移8位判断0xff的,取3个字节的-1,-2的,大体上网上最多就这两种). 后来偶然发现一个方法,CharsetPrinter. 这个方法需要引入jar包,非常好用. public static String guessEncoding(String filename) { try { CharsetPrinter

在eclipse下安装ADT插件出错的解决办法

通过Google大神,在国外网站,找到相应的解决办法!还是Google比较权威呀. Go to Help, "Install New Software..." Click on "Available Sofware Sites" Search http://download.eclipse.org/releases/indigo and enable it Search http://download.eclipse.org/tools/cdt/releases/i

Ubuntu下U盘文件只读的解决办法

Ubuntu下U盘文件只读的解决办法 解决方法: 1. 在Ubuntu终端运行如下命令 tail -f /var/log/syslog 2. 插入有只读文件系统故障的U盘 3. 观察命令行输出 输出局部如下: Jul816:44:50 cslouis-pc kernel:[15595.155904] FAT:Filesystem error (dev sdb4) Jul816:44:50 cslouis-pc kernel:[15595.155905] fat_get_cluster: inva

django下ajax请求403(FORBIDDEN)的解决办法

环境 django 1.8.3 错误描述 POST http://localhost:8000/ajax_query_data/ 403 (FORBIDDEN) 解决办法 django官方文档上如下内容: https://docs.djangoproject.com/en/dev/ref/csrf/#ajax AJAX While the above method can be used for AJAX POST requests, it has some inconveniences: yo