V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
aisensiy
V2EX  ›  程序员

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

  •  
  •   aisensiy ·
    aisensiy · 2013 年 6 月 5 日 · 6510 次点击
    这是一个创建于 4620 天前的主题,其中的信息可能已经有所发展或是发生改变。
    自己 search 了一下,找到了 Apache 下的一个项目 POI。尝试了一下,发现中文乱码问题无法解决 T_T。小崩溃。

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

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

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

    如果这个方法行不通,不知有没有其他的方式呢。主要是希望在 *nix 平台可以适用。
    第 1 条附言  ·  2013 年 6 月 6 日
    POITextExtractor poitex =
    ExtractorFactory.createExtractor(new File(filename));
    String text2007 = new String(poitex.getText().getBytes("GB2312"));
    System.out.println(text2007);

    我尝试做 GB2312 的转码,这样似乎不行。
    13 条回复    1970-01-01 08:00:00 +08:00
    loading
        1
    loading  
       2013 年 6 月 5 日
    我还想说win32api呢…
    swulling
        2
    swulling  
       2013 年 6 月 5 日
    Nourl
        3
    Nourl  
       2013 年 6 月 5 日   ❤️ 2
    思路:
    *.doc *.docx是由几个xml文件拼成的,后缀改成*.zip后打开可以看到这几个xml文件。
    1. 提取xml文件
    2. 脚本xml库读取需要的内容
    homfen
        4
    homfen  
       2013 年 6 月 5 日
    用UTF8试试
    lizheming
        5
    lizheming  
       2013 年 6 月 5 日   ❤️ 1
    .doc(x)文档不就是一个压缩包么,你把后缀改成.zip解压就好了...东西一应俱全~
    aisensiy
        6
    aisensiy  
    OP
       2013 年 6 月 5 日
    @lizheming
    @Nourl

    多谢指点,看到主要内容了。但是,xml 依然一片混乱啊,样式混杂,没有和排版出来的一一对应关系。
    leafgray
        7
    leafgray  
       2013 年 6 月 5 日
    extract再自己getbytes转一下干什么呢?
    docx可以用docx4j.... doc主要还是poi... (JAVA)
    Part
        8
    Part  
       2013 年 6 月 5 日
    @lizheming 解压了一下,表示没发现有内容文件,只有 _rels/.rels theme [Content_Types].xml
    xiaoxuxu
        9
    xiaoxuxu  
       2013 年 6 月 5 日
    中文应该都是GB2312。以前试过用poi转成html,中文是正常的
    lizheming
        10
    lizheming  
       2013 年 6 月 5 日
    @Part .doc的好像不是规范的协议,貌似不能单纯解压..原谅我的信口开河吧o(╯□╰)o
    micyng
        11
    micyng  
       2013 年 6 月 6 日
    docx有标准协议,直接看协议文档不就好了
    dreampuf
        12
    dreampuf  
       2013 年 6 月 6 日
    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
        13
    Muninn  
       2013 年 6 月 6 日
    好勤奋呀,研究这个,我都是直接用库或者Win32 API的
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   3046 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 13:51 · PVG 21:51 · LAX 05:51 · JFK 08:51
    ♥ Do have faith in what you're doing.