读取和写入DOCX文件
我现在正在处理两个docx文件。一个文件里有产品的文字信息,比如起始序列号、长度、宽度和高度。另一个文件则是一个贴纸标签,上面有图片和第一个文件里的所有文字信息。
我现在的做法是:首先打开第一个docx文件,复制所有的文字信息(序列号、长度、宽度和高度)。然后把这些信息粘贴到第二个docx文件中,这个文件里有格式化好的标签。如果我需要制作多个标签,就复制这个标签,然后把序列号加1。
这样制作不同产品的多个标签花费了很多时间。我的目标是找到一种更简单的方法,把一个docx文件里的数据直接放到另一个文件里。而且在需要的时候能生成更多的标签。
我最开始的想法是提取docx文件,获取它的xml内容。然后用javascript、c++或其他语言来读取这些数据。接着让用户输入需要生成的标签数量,处理xml内容,最后再把它打包成docx文件。
后来我又想到了使用Windows Office的“邮件合并”功能,但我之前从来没有用过这个。
我想知道有没有人能给我一些简单的建议,如何从一个docx文件导入数据,并在另一个文件中生成标签。
我对任何建议都持开放态度。
另外,我并不是专业程序员。我是一名计算机工程的本科生,有一些c、c++、java、javascript、python、MIPS汇编和php的经验。
2 个回答
关于Open XML,你可以查看这个视频 https://www.youtube.com/watch?v=rMnEl6JZ7I8,还有一个网站开发者的资源 http://openxmldeveloper.org/。在这个网站上,你可以找到一些开发工具包(sdk),具体包括:
- JavaScript的Open XML SDK:http://openxmldeveloper.org/wiki/w/wiki/open-xml-sdk-for-javascript.aspx。演示可以在这里查看:http://openxmldeveloper.org/blog/b/openxmldeveloper/p/openxmlsdkjs_demo.aspx
- Open XML与Java的结合 http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2006/11/21/openxmlandjava.aspx
- .Net资源 http://openxmldeveloper.org/resources/dotnet/m/cc/default.aspx
- 我知道的唯一一个开源(而且可能更容易找到)的解决方案是:
http://poi.apache.org/document/quick-guide-xwpf.html
这个工具在速度上表现不错,而且是免费的软件。
不过,如果你打开一个文件,修改后再保存,结果可能会有点问题:格式可能会稍微不对。在我测试pptx文件时就是这样。
我觉得如果你需要用户在网页上进行互动来创建文档,可以围绕这个库建立一个小的HTTP接口。
还有一个选择是:http://www.docx4java.org/trac/docx4j - 不过我还没有测试过这个。
- 你也可以选择C#/微软的方式:如何使用Microsoft.Office.Interop.Word创建.docx文档?
使用Interop(上面问题的第一个答案中的第二个例子)的方法在格式准确性上效果最好。基本上,当你用Interop打开一个文件时,修改和保存后,它看起来会和之前一模一样。不过,这种方式不适合用户互动,因为它会启动一个单独的MS Office进程——根据我自己的使用经验,我不太推荐这种方式。但如果你想在一个用户会话中批量生成这些文件,它的效果会很好。
我无法对上面SO问题中提到的“OpenXML SDK”库发表意见。