我正在使用 2 个 docx 文件。一个 docx 文件包含产品的文本信息(起始序列号、长度、宽度和高度)。另一个 docx 文件包含带有图像的贴纸标签以及第一个文件中的所有文本信息。
这就是我目前所做的: 我打开第一个 docx 文件并复制所有文本信息(序列号、长度、宽度和高度) 然后,我将每个信息粘贴到包含格式化标签的第二个 docx 文件中。 如果我需要制作多个标签,我会复制标签并将序列号加 1。
为不同的产品制作多个标签需要花费大量时间。我的目标是想出一种更简单的方法来从一个 docx 中获取数据并将其注入(inject)另一个 docx 中。此外,在需要时生成更多标签。
我的第一个想法是提取 docx 文件以获取它的 xml 内容。然后使用 javascript、c++ 或任何其他语言读取数据。然后要求用户输入要生成的标签数量,操作 xml,并将其重新打包为 docx 文件。
然后我就想到尝试使用windows office的“邮件合并”功能,但是我以前从来没有这样做过。
我想知道是否有人对一种简单的解决方案有任何建议,可以从一个 docx 文件导入数据并将标签生成到另一个文件中。
我愿意接受任何建议。
另外,我不是专业程序员。我是一名计算机工程本科生,在 c、c++、java、javascript、python、MIPS 汇编和 php 方面有一些经验。
最佳答案
- 我所知道的唯一开源(并且可能更容易获得)解决方案是:
http://poi.apache.org/document/quick-guide-xwpf.html
就速度而言,这是一个不错的选择,而且它是免费软件。
但是,如果您打开一个文件,对其进行更改并再次保存 - 结果可能会很不稳定:格式可能会略有偏差。至少在我对 pptx 对应部分的测试中是这样。
我认为当您进行用户交互(网页?)来创建文档时,您可以围绕该库构建一个小型 HTTP Api。
还有:http://www.docx4java.org/trac/docx4j - 我还没有测试过。
- 您还可以采用 C#/Redmond 方式:How do I create the .docx document with Microsoft.Office.Interop.Word?
就格式的准确性而言,互操作(上述问题第一个答案中的第二个示例)方式给出了最佳结果。基本上,当您使用 Interop 打开文件时 - 当您更改并保存它时,它看起来会是一样的。但在与用户交互时不能使用它 - 因为它会启动一个单独的 MS Office 进程 - 从我自己的用户体验来看,我不会指望这一点。但是,如果您想在单个用户 session 中批量生成这些文件 - 它将提供良好的结果。
我无法评论上述问题中描述的“OpenXML SDK”库。
关于javascript - 读写 DOCX 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25231724/