只能使用复合文件流从97-2003恢复Word文档吗?

问题描述

我正在尝试恢复使用97-2003版本的Word文档。我不记得为什么这样做,但是我将Compound File streams保存到了一个文件夹中,这绝对是我想作为原始文档获得的东西。有什么解决办法吗?

谢谢!

解决方法

当然,从理论上讲,您应该可以恢复它。

您应该可以使用来创建根复合文档

StgCreateDocfile() // or StgCreateStorageEx()

如果成功,您将需要IStorage*指针。

如果文件夹中有一个文件夹,则必须为每个文件夹创建子存储,然后递归执行。该API为IStorage::CreateStorage() ...查找它。

如果文件夹中有文件,则需要在与文件夹等效的存储中创建流。要创建流,请使用IStorage::CreateStream() ...查找参数。

查看您的屏幕快照,其中有一些流的名称类似于[1] CompObj或[5] SummaryDocumentInformation。对于[n]部分,它大概等于_T('\ 00n'),其中n为1或5或其他值-可能是控制字符。我已经在复合文件中看到了。如果要调查,请创建Word 97-2003文档并另存为.doc文件并检查结构。

因此,类似[1] CompObj的东西实际上是_T(“ \ 001CompObj”)

文件名中有关[n]的内容是有根据的/有经验的猜测。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...