在已在Excel中打开时,使用QFile写入文件失败,没有错误代码

时间:2013-09-26 09:27:20

标签: c++ excel qt qfile

我尝试使用QFile写入现有文件,该文件按预期工作。但是,问题是如果文件在Excel中打开,则从我的程序写入文件失败。

我尝试使用QFileInfo测试权限,并拥有该文件的所有读写权限。测试

bool opened = file-> open (QIODevice :: WriteOnly) 

返回true。

使用notepad ++打开文件时,不会出现同样的问题。

如何检查文件是否已锁定且无法写入?

2 个答案:

答案 0 :(得分:2)

Excel锁定其打开的文件以供独占使用。您无法写入打开的文件,移动或删除它。没有办法绕过这个锁。

另请参阅:Write to locked file regardless of lock status

答案 1 :(得分:1)

使用QFile :: write函数时,它返回写入的字节数,如果发生错误则返回-1。

如果从write函数检查返回代码,您应该可以使用它来确定该文件被另一个进程锁定。

调用QFile :: open会返回而不会出现错误,因为您仍然可以获得该文件的有效句柄,即使另一个进程已将其锁定,也无法同时写入该文件。