如何在 C++ 中创建 OpenOffice 文档 [重复]

Posted

技术标签:

【中文标题】如何在 C++ 中创建 OpenOffice 文档 [重复]【英文标题】:How can an OpenOffice document be created in C++ [duplicate] 【发布时间】:2011-04-28 05:17:53 【问题描述】:

可能重复:Creating, opening and printing a word file from C++

嗨,

我需要从一个 c++ 程序创建一个 word 文档, 我使用的是 windows 2008 服务器,办公自动化有时会在这里失败,而且我需要非交互式服务来处理,因为自动化提供交互式服务。我已经实现了自动化,它有时会失败

我可以通过哪些方式创建 openoffice/word doc?

您能否建议我执行上述操作的任何链接或教程。

PS - 我开始了解几种方法 1.Openoffice SDK 2.OpenXML SDK

如果您使用过上述方法,请建议我使用上述哪种方法。

提前致谢

【问题讨论】:

@paul R - 请检查您所链接的上述问题是否涉及办公自动化、嵌入 Word 文档。我需要通过 c++ 程序创建一个 openoffice word 文档,可能使用的是 officeopen XML 或 openoffice SDK。 @In silico - 我使用的是 windows 2008 服务器,办公自动化有时会在这里失败,而且我需要非交互式服务来处理,因为自动化提供交互式服务。我已经实现了自动化,它有时会失败。 Office 自动化对于服务器来说是不安全的。这绝对不是提到的其他问题的重复,关于办公自动化的答案也不合适。 @ Paul R、Greg S、MSalters、Bo Persson、Graviton - 我看不出这与***.com/questions/145573/… 的问题有什么重复之处,因为我已经清楚地提到我正在服务器中编程并且自动化在这里失败。 这不是重复的。 Paul R、Greg S、MSalters、Bo Persson、Graviton 中没有一个人在任何 Office 编程标签中都有任何徽章 - 很明显,那些关闭它的人不了解这里讨论的技术。正在重新开放。 【参考方案1】:

这是一个新发布的名为 libOPC 的 C 库,它与 Open XML SDK 具有相同的意图,但可以在所有 Linux/Windows/Mac/etc 中使用。您可以在此处阅读:libOPC version 0.0.1 released 并从CodePlex 获取代码(请务必查看documentation page 以获取演示视频)。

【讨论】:

【参考方案2】:

如果您的目标是 Word 2007 及更高版本,则直接使用 Open Office XML SDK 和 Open Office XML 是不错的选择。

如果您的目标用户是 Word 2003 和更早版本的用户,那么它可能不是最佳选择。但是,即使这些用户也可以安装免费过滤器,以便能够在 Word 2003 中打开 Word 2007 (.docx) 文档。您可以从您的应用程序链接到此下载。大多数使用 Word 2003 或更早版本的人可能已经安装了此过滤器,因为他们经常会遇到人们共享较新文件的情况。

http://www.microsoft.com/DOWNLOADS/en/details.aspx?familyid=941b3470-3ae9-4aee-8f43-c6bb74cd1466&displaylang=en

Open Office XML SDK 是一个 .NET API,用于读取和写入 .docx 和其他 Office 2007 文件。如果您使用的是 C++/CLI,那么您可以很容易地使用它,它将简化编写 .docx 文件的过程。

http://www.microsoft.com/downloads/en/details.aspx?FamilyId=C6E744E5-36E9-45F5-8D8C-331DF206E0D0&displaylang=en

但是,如果您使用没有 .NET 的直接 C++,则无法使用 SDK。不过,这并不是一个巨大的损失。无论如何,SDK 只是 XML 文件的一个非常小的包装器。一个 docx 文件只是一个包含一堆 XML 文件的 zip。文件之间的关系、文本的存储位置以及某些东西是如何按位置而不是通过 id 引用的,这方面存在一些奇怪之处,这通常被认为是 XML 的一种非常糟糕的做法。无论如何,这些问题很容易解决,您可以手动创建 .docx 文件而不会遇到太多麻烦。事实上,创作比阅读容易得多。

SDK 仍然很有用,因为它包含一个文件探索工具,可为您提供现有文件的图形浏览器。如果您想知道如何创建特定内容,请在 Word 2007 中进行,保存文件,然后查看文件包含的内容。

【讨论】:

【参考方案3】:

我建议您查看this page,作者在其中解释了他在服务器上生成 Word 文档所采用的解决方案,而无需使用 MsWord,也无需自动化或第三方库。

【讨论】:

以上是关于如何在 C++ 中创建 OpenOffice 文档 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 .Net 中创建 ODS 文档

在 OpenOffice Calc 中创建图表

OpenOffice.org 关闭后如何重新连接?

如何使用 C++ 在 Windows 中创建守护线程?

在Linux上使用命令行将openoffice文档(odt)转换为PDF?

我可以在 OpenOffice Calc 中创建水平自动过滤器吗