【发布时间】:2010-09-12 14:20:40
【问题描述】:
我最近了解了 .docx 文件的基本结构(它是一个特殊结构的 zip 存档)。但是,docx 的格式不像 doc。
doc 文件是如何工作的?文件格式、结构等是什么?
【问题讨论】:
-
它是二进制的,规范在Microsoft's Open Specification Promise的条款下可用
我最近了解了 .docx 文件的基本结构(它是一个特殊结构的 zip 存档)。但是,docx 的格式不像 doc。
doc 文件是如何工作的?文件格式、结构等是什么?
【问题讨论】:
二进制 .doc 文件的完整格式记录在来自 (the Wikipedia article on .doc) 的 this pdf 中
【讨论】:
.doc 格式相当复杂。与大多数 Microsoft 格式一样,它反映了版本和旧支持之间的长期变化历史。他们不久前发布了它,所以如果你想查看它(以及其他 pre-Office 2007 格式),knock yourself out here。
【讨论】:
这不是您问题的直接答案,但我强烈建议您阅读 Joel Spolsky 的文章 Why are the Microsoft Office file formats so complicated? (And some workarounds)。它将让您深入了解 .doc 格式的复杂程度以及原因。 Joel 还对 .doc 格式的组成进行了非常基本的概述:
您看,Excel 97-2003 文件是 OLE 复合文档,本质上是文件 单个文件中的系统。这些足够复杂,您必须阅读 另一个 9 页规范来解决这个问题。而这些“规范”看起来更像是 C 数据 结构比我们传统上认为的规范。这是一个完整的分层文件 系统。
(引用是指 Excel 文件,但它也适用于 Word 文档)。内容丰富的文章,有助于理解为什么 .docx 和 ODF 文件的结构和设计在从外部角度检查时更加合乎逻辑。
【讨论】:
MS Word DOC 格式背后的基本思想是一个 OLE 复合文档,正如 Kibbee 已经写的那样,它基本上是一个内存转储。这是一种非常复杂且令人费解的文档存储方式,但是如果您曾经真正深入研究过 Word 应用程序,您就会知道它有多么疯狂的功能,如果您在商业环境中使用过它,您将拥有一个很好的感受它如何与 Office 系列中的其他程序集成。
一般来说,OLE 复合文档是非常可扩展的结构,它允许您将各种数据填充到一个文件中,甚至在某种程度上可以处理您没有安装应用程序的数据。例如,如果您将 Equation 对象(来自 MS Equation Editor)插入到文档中,它将被存储为子对象,就像文件中的文件一样,但该对象不仅包含 Equation Editor 所需的数据为了编辑和渲染它,它还存储了一个通用位图(或元文件,也许)表示,因此它可以在没有安装方程式编辑器的机器上显示,尽管没有编辑。
这就是为什么,对于如何你必须阅读其他人已经链接到的规范;)
如果您想以简单的方式处理文件,请确保您的软件在安装了 Word 的 Windows 计算机上运行,然后使用 COM/OLE 自动化打开和操作文档。这样你就不用担心文件格式了。
【讨论】:
Doc 是 word 文档的二进制格式 - 这里是 Microsoft Office Word 97-2007 Binary File Format Specification [*.doc] 文档。
【讨论】: