安卓端實現(xiàn)讀取 Word 類文檔:doc算色、docx等格式內(nèi)容

一尽爆、引言

在安卓開發(fā)中怎顾,讀取 Word 文檔(包括 .doc.docx 格式)是一個常見需求。Apache POI 是一個強大的 Java 庫漱贱,專門用于處理 Microsoft Office 文件格式槐雾。本文將帶你了解如何在安卓端實現(xiàn)這一功能,輕松讀取你手中的 Word 文檔幅狮。

二募强、什么是 Apache POI?

Apache POI 是一個開源的 Java 庫崇摄,支持讀取和寫入多種 Microsoft Office 文件格式擎值。它的名字“POI”寓意“Poor Obfuscation Implementation”(糟糕的混淆實現(xiàn)),暗示了其對 Microsoft 文件格式的逆向工程逐抑。適用于多種平臺鸠儿,使得辦公文檔的處理變得簡單高效。

三厕氨、主要功能

  • 支持多種文件格式

    • Excel.xls(HSSF)和 .xlsx(XSSF)
    • Word.doc(HWPF)和 .docx(XWPF)
    • PowerPoint.ppt(HSLF)和 .pptx(XSLF)
  • 跨平臺支持:作為 Java API进每,Apache POI 可以在任何支持 Java 的平臺上運行。

四命斧、安卓端實現(xiàn) Word 文檔的內(nèi)容提取

4.1 讀取 .doc 文檔

對于 .doc 文件田晚,我們需要使用 HWPF。首先国葬,下載以下 jar 包:

將這些 jar 包放入 Android 項目的 libs 目錄贤徒,代碼示例如下:

try (InputStream is = new FileInputStream(file)) {
    HWPFDocument doc = new HWPFDocument(is);
    FileInfo fileInfo = FileInfo.fromFile(file);
    fileInfo.content = doc.getDocumentText(); // 輸出文檔文本
    listener.onComplete(null, fileInfo);
} catch (FileNotFoundException e) {
    LogUtil.eError("poi", "文件不存在", e);
    listener.onComplete(e, null);
} catch (IOException e) {
    LogUtil.eError("poi", "文件讀取異常", e);
    listener.onComplete(e, null);
}

4.2 讀取 .docx 文檔

對于 .docx 文件芹壕,我們需要使用 XWPF。下載以下 jar 包:

這樣引入會遇到錯誤:

POI : duplicate entry: org/apache/xmlbeans/xml/stream/BindingConfig.class

五接奈、解決方案

因為 Java 的依賴包在 Android 環(huán)境下不太友好踢涌,我們需要尋找替代方案。推薦使用 poi-on-android鲫趁,這是一個開源項目斯嚎,提供了對 Apache POI 的 Android 適配。

  1. 移除之前的 POI 庫挨厚。

  2. 下載并引入 poishadow-all.jar(該包體積較大堡僻,包含了 POI 的大部分功能)。

    引入后可能會遇到:

    Cannot invoke "String.length()" because "<parameter1>" is null
    

    有關該問題的討論可參考 Stack Overflow疫剃。

5.1 解決方案 1

將 Android Gradle Plugin 升級到 8 以上钉疫,可以通過 Android Studio 自動升級:

  • 路徑:Tools -> AGP Upgrade Assistant

升級后可能需要處理的一些依賴庫的編譯錯誤,查看相關庫的 GitHub 頁面巢价,根據(jù)提示進行適當?shù)陌姹旧墶?/p>

5.2 解決方案 2

如果不想折騰過多牲阁,可以直接下載較低版本的 poi-on-android,例如 0.7 版本壤躲,可以避免許多問題城菊。

六、混淆設置

使用 poi-on-android 時碉克,記得添加混淆規(guī)則凌唬,避免因混淆導致應用崩潰。更多規(guī)則可參考 混淆規(guī)則文檔漏麦。

七客税、總結(jié)

通過 Apache POI,我們可以在安卓應用中輕松實現(xiàn)讀取 Word 文檔的功能撕贞。雖然過程中可能會遇到一些問題更耻,但只要耐心處理,就能將這些問題一一解決捏膨。趕緊試試吧秧均,讓你的應用可以讀取文檔,不再局限于文本內(nèi)容号涯!

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末熬北,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子诚隙,更是在濱河造成了極大的恐慌,老刑警劉巖起胰,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件久又,死亡現(xiàn)場離奇詭異巫延,居然都是意外死亡,警方通過查閱死者的電腦和手機地消,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門炉峰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人脉执,你說我怎么就攤上這事疼阔。” “怎么了半夷?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵婆廊,是天一觀的道長。 經(jīng)常有香客問我巫橄,道長淘邻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任湘换,我火速辦了婚禮宾舅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘彩倚。我一直安慰自己筹我,他們只是感情好,可當我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布帆离。 她就那樣靜靜地躺著蔬蕊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪盯质。 梳的紋絲不亂的頭發(fā)上袁串,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天,我揣著相機與錄音呼巷,去河邊找鬼囱修。 笑死,一個胖子當著我的面吹牛王悍,可吹牛的內(nèi)容都是我干的破镰。 我是一名探鬼主播,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼压储,長吁一口氣:“原來是場噩夢啊……” “哼鲜漩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起集惋,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤孕似,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后刮刑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喉祭,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡养渴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了泛烙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片理卑。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蔽氨,靈堂內(nèi)的尸體忽然破棺而出藐唠,到底是詐尸還是另有隱情,我是刑警寧澤鹉究,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布宇立,位于F島的核電站,受9級特大地震影響坊饶,放射性物質(zhì)發(fā)生泄漏泄伪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一匿级、第九天 我趴在偏房一處隱蔽的房頂上張望蟋滴。 院中可真熱鬧,春花似錦痘绎、人聲如沸津函。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尔苦。三九已至,卻和暖如春行施,著一層夾襖步出監(jiān)牢的瞬間允坚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工蛾号, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留稠项,地道東北人。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓鲜结,卻偏偏與公主長得像展运,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子精刷,可洞房花燭夜當晚...
    茶點故事閱讀 45,870評論 2 361