读取和写入DOCX文件

2 投票
2 回答
3637 浏览
提问于 2025-04-18 16:45

我现在正在处理两个docx文件。一个文件里有产品的文字信息,比如起始序列号、长度、宽度和高度。另一个文件则是一个贴纸标签,上面有图片和第一个文件里的所有文字信息。

我现在的做法是:首先打开第一个docx文件,复制所有的文字信息(序列号、长度、宽度和高度)。然后把这些信息粘贴到第二个docx文件中,这个文件里有格式化好的标签。如果我需要制作多个标签,就复制这个标签,然后把序列号加1。

这样制作不同产品的多个标签花费了很多时间。我的目标是找到一种更简单的方法,把一个docx文件里的数据直接放到另一个文件里。而且在需要的时候能生成更多的标签。

我最开始的想法是提取docx文件,获取它的xml内容。然后用javascript、c++或其他语言来读取这些数据。接着让用户输入需要生成的标签数量,处理xml内容,最后再把它打包成docx文件。

后来我又想到了使用Windows Office的“邮件合并”功能,但我之前从来没有用过这个。

我想知道有没有人能给我一些简单的建议,如何从一个docx文件导入数据,并在另一个文件中生成标签。

我对任何建议都持开放态度。

另外,我并不是专业程序员。我是一名计算机工程的本科生,有一些c、c++、java、javascript、python、MIPS汇编和php的经验。

2 个回答

1

关于Open XML,你可以查看这个视频 https://www.youtube.com/watch?v=rMnEl6JZ7I8,还有一个网站开发者的资源 http://openxmldeveloper.org/。在这个网站上,你可以找到一些开发工具包(sdk),具体包括:

2
  1. 我知道的唯一一个开源(而且可能更容易找到)的解决方案是:

http://poi.apache.org/

http://poi.apache.org/document/quick-guide-xwpf.html

这个工具在速度上表现不错,而且是免费的软件。

不过,如果你打开一个文件,修改后再保存,结果可能会有点问题:格式可能会稍微不对。在我测试pptx文件时就是这样。

我觉得如果你需要用户在网页上进行互动来创建文档,可以围绕这个库建立一个小的HTTP接口。

还有一个选择是:http://www.docx4java.org/trac/docx4j - 不过我还没有测试过这个。

  1. 你也可以选择C#/微软的方式:如何使用Microsoft.Office.Interop.Word创建.docx文档?

使用Interop(上面问题的第一个答案中的第二个例子)的方法在格式准确性上效果最好。基本上,当你用Interop打开一个文件时,修改和保存后,它看起来会和之前一模一样。不过,这种方式不适合用户互动,因为它会启动一个单独的MS Office进程——根据我自己的使用经验,我不太推荐这种方式。但如果你想在一个用户会话中批量生成这些文件,它的效果会很好。

我无法对上面SO问题中提到的“OpenXML SDK”库发表意见。

撰写回答