如何读取 .doc .docx 的文本内容...

2013-06-05 16:45:36 +08:00
 aisensiy
自己 search 了一下,找到了 Apache 下的一个项目 POI。尝试了一下,发现中文乱码问题无法解决 T_T。小崩溃。

主要是 .doc 或者 .docx 里面的编码是神马啊。

code 在这里 https://gist.github.com/aisensiy/5712530

希望有经验的同学帮帮忙。

如果这个方法行不通,不知有没有其他的方式呢。主要是希望在 *nix 平台可以适用。
6012 次点击
所在节点    程序员
13 条回复
loading
2013-06-05 16:52:21 +08:00
我还想说win32api呢…
swulling
2013-06-05 16:55:24 +08:00
Nourl
2013-06-05 16:58:10 +08:00
思路:
*.doc *.docx是由几个xml文件拼成的,后缀改成*.zip后打开可以看到这几个xml文件。
1. 提取xml文件
2. 脚本xml库读取需要的内容
homfen
2013-06-05 16:58:30 +08:00
用UTF8试试
lizheming
2013-06-05 16:59:51 +08:00
.doc(x)文档不就是一个压缩包么,你把后缀改成.zip解压就好了...东西一应俱全~
aisensiy
2013-06-05 17:16:47 +08:00
@lizheming
@Nourl

多谢指点,看到主要内容了。但是,xml 依然一片混乱啊,样式混杂,没有和排版出来的一一对应关系。
leafgray
2013-06-05 19:50:39 +08:00
extract再自己getbytes转一下干什么呢?
docx可以用docx4j.... doc主要还是poi... (JAVA)
Part
2013-06-05 21:04:47 +08:00
@lizheming 解压了一下,表示没发现有内容文件,只有 _rels/.rels theme [Content_Types].xml
xiaoxuxu
2013-06-05 21:18:37 +08:00
中文应该都是GB2312。以前试过用poi转成html,中文是正常的
lizheming
2013-06-05 21:58:13 +08:00
@Part .doc的好像不是规范的协议,貌似不能单纯解压..原谅我的信口开河吧o(╯□╰)o
micyng
2013-06-06 15:22:23 +08:00
docx有标准协议,直接看协议文档不就好了
dreampuf
2013-06-06 15:34:27 +08:00
MS Office 有两种协议 97(H*F)和03(X**F),不要自己解压然后解析,开源最成熟(相对)是Apache POI,例子 http://poi.apache.org/text-extraction.html
如果是单纯导出文本也可以借鉴基于POI的 tika http://tika.apache.org/

> The Apache Tika™ toolkit detects and extracts metadata and structured text content from various documents using existing parser libraries.
Muninn
2013-06-06 15:36:01 +08:00
好勤奋呀,研究这个,我都是直接用库或者Win32 API的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/71344

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX