㈠ 如何用android解析docx文檔
android上查閱word類型文檔的方式主要有幾種,下載諸如wps,office等應用,用戶可以直接打開需要查看的word文檔,對於應用開發者來說,如何在自己的應用中集成word文檔查閱功能,使自己的app不受限於第三方應用有沒有安裝,有時候還是需要考慮的。
集成app閱讀word功能也可以通過幾種方式實現,例如購買專門的sdk包,像Aspose等(money啊)或者伺服器端處理成圖片或者html,然後android端去請求訪問等方式。對於大部分個人開發者而言,這兩種方式就顯得比較重量級了。
下面介紹兩種專門解析docx文件的方式:docx4j 以及poi
Docx4j
github地址:https://github.com/plutext/AndroidDocxToHtml
這個是官網demo,基本可以直接使用,解析出來的格式比較全,樣式也比較接近原文檔,就是解析速度令人不敢恭維,手機上測試的話,一般一份兒docx文檔都需要30s以上甚至更多,有時候測試文檔明明就只有幾十k大小而已,對於比較大,比較復雜的文檔,時間就更是讓人崩潰。解析速度不是令人滿意。
解析測試中遇到的bug
1.表格丟失,內容丟失:內嵌表格(表格中還有表格的這種)的內容和樣式會有部分丟失現象
2.表格(又是我?)樣式:假如文檔中的表格在word文檔中排版時超出了該文檔的邊界線,你會發現超出邊界的內容又不見了
3.目錄亂碼:如果文檔中有目錄,目錄會被加上一些超鏈接,需要手工處理去掉
4.圖片無法解析:有一些格式的圖片無法解析,比如EMF,WMF這種類型的
5.批註無法顯示:目前沒有找到批註顯示的地方,暫且算丟失吧,後面在試試
6.。。。其它暫時還沒被發現的問題
POI
poi是apache的一個開源項目,不多說,直接上官網去下載就可以
官網地址:http://poi.apache.org/
如果你是android studio用戶:那就很簡單了
只需要引入依賴(版本號不一定哦,gradle會自己把相關依賴包下載到位):
compile 'fr.opensagres.xdocreport:org.apache.poi.xwpf.converter.xhtml:1.0.5'
那如果你是eclipse用戶(伙計,趕緊用studio吧)
需要手工引入以下jar包,包括:
poi , poi-ooxml , ooxml-schema,org.apache.poi.xwpf.converter.xhtml,org.apache.poi.xwpf.converter.core
實現代碼如下
{
InputStream is = new FileInputStream(file);
XWPFDocument docx = new
XWPFDocument(is);
OutputStream os = new ByteArrayOutputStream();
String imgDesPath = "/sdcard/img";
File imgFile = new File("/sdcard/img");
this.baseUrl = this.getDir("image", Context.MODE_PRIVATE).toURL().toString();
if (!imgFile.exists()) {
file.mkdirs();
}
poi解析的問題
速度比docx4j要稍快一點,會有文檔內容解析不全樣式丟失的情況
流程
調用介面將docx轉化為html,然後app中通過webview載入該html即可顯示
轉化代碼如下(我就想問下,這代碼格式到底該怎麼調啊~好煩躁):
try {
InputStream is = new FileInputStream(file);
XWPFDocument docx = new
XWPFDocument(is);
OutputStream os = new ByteArrayOutputStream();
String imgDesPath = "/sdcard/img";
File imgFile = new File("/sdcard/img");
this.baseUrl = this.getDir("image", Context.MODE_PRIVATE).toURL().toString();
if (!imgFile.exists()) {
file.mkdirs();
}
XHTMLOptions options = XHTMLOptions.create().URIResolver(new BasicURIResolver(imgDesPath));
options.setExtractor(new FileImageExtractor(imgFile));
options.setIgnoreStylesIfUnused(false);
options.setFragment(true);
XHTMLConverter.getInstance().convert(docx, os, options);
**os.write("/sdcard/xxx/html文件")**
} catch (Exception e) {
Log.d(TAG, "catch " + e.getMessage());
}
webview 裡面直接load 上面生成的html文件就可以了
㈡ android系統可以裝word辦公 軟體嗎
可以,android的辦公軟體也蠻多的,給你推薦一款個人覺得不錯的
office辦公利器破解版:
http://www.apkok.com/soft/4_5040.html
通過它你能夠查看、創建和編輯Word、Excel和PowerPoint等文檔,支持的基本格式包括:doc,
docx,
xls,
xlsx,
ppt,
pptx,這基本上能夠滿足你對基本的辦公文檔的應用需求了。
㈢ Android開發如何讀取並顯示word和pdf文檔
通過對資料庫的索引,我們還為您准備了:
Android開發如何讀取並顯示word和pdf文檔呢
問:有做過類似項目的朋友講一下么?
答:大家好! 我是個Android新手,最近有個項目,其中有個需求就是在Android應用程序中查看word和pdf格式的文檔(PS:不是用intent調用第三方軟體打開文檔哦~),可惜Android沒有直接顯示word和pdf文檔的view。於是本菜鳥上網查了好久好久好久哇= =...
===========================================
android開發中怎樣讀取一個文件里的內容並把內容顯...
問:我以為和java的讀寫文件一樣的,但他好像有自己的獲取輸入輸出留的方法...
答:基本上都差不多。 一般來說。文件,XML都放在assets這個文件夾下。
===========================================
android怎麼讀取帶有圖片的WORD文檔
問:我以為和java的讀寫文件一樣的,但他好像有自己的獲取輸入輸出留的方法...
答:用Document to go或者quick office這類軟體就可以了。這些軟體在機鋒市場和豌豆莢里一搜就有
===========================================
【Android開發】請問Android怎麼打開word文件?
問:請問Android怎麼打開word文件?網上看了好多,但都不能運行,有的說用PO...
答:用quick ooffice,在網路移動應用上下載quick office(pro版),拷貝到手機,安裝好就行
===========================================
android編程:怎樣讀取txt文件
問:請問Android怎麼打開word文件?網上看了好多,但都不能運行,有的說用PO...
答:StringBuffer buffer = new StringBuffer(); try { FileInputStream fis = new FileInputStream("/sdcard/XXX.txt"); InputStreamReader isr = new InputStreamReader(fis,"GB2312");//文件編碼Unicode,UTF-8,ASCII,GB2312,Big5 Reader in = new...
===========================================
Android開發中讀寫office文件(word,ppt,excel)...
問:最近在寫一個基於android平台的辦公套件,其中設計到對word,ppt,excel...
答:簡單的,可以使用POI處理 想處理復雜和能用的,只有在伺服器端處理,再返回手機android查看
===========================================
Android開發 ,如何讀取AndroidMainfest.xml裡面的...
問:AndroidMainfest.xml文件如下:我想在Androd程序中讀取android:largeHea...
答:largeheap是一個布爾類型的
===========================================
android程序中如何打開並編輯word,excel等文件?
問:我現在已經使用POI包,將內容放在html里,在webview上顯示出來,但是不...
答:word?excel?笑話,微軟都沒有開發基於安卓版本的word,不過最近應該有動作了把。但是,你的軟體和人家的軟體,是屬於兩個APP,最多是給你個介面讓你啟動,但是至於編輯,你得看看人家的應用有沒給你介面
===========================================
android開發中,如何實現讀取pdf格式的文件,並把...
問:最近做關於android開發,讀取pdf格式文件的應用,但是不知道如何下手啊...
答:得嵌入PDF第三方軟體或自己編寫一個類似的打開軟體吧,否則理論上是看不了的。(僅供參考)
㈣ android怎麼打開word文件
Android ----Intent 的各種打開文件 doc word
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.net.Uri.Builder;
import java.io.File;
import android.content.Intent;
//自定義android Intent類,
//可用於獲取打開以下文件的intent
//PDF,PPT,WORD,EXCEL,CHM,HTML,TEXT,AUDIO,VIDEO
public class MyIntent
{
//android獲取一個用於打開HTML文件的intent
public static Intent getHtmlFileIntent( String param )
{
Uri uri = Uri.parse(param ).buildUpon().encodedAuthority("com.android.htmlfileprovider").scheme("content").encodedPath(param ).build();
Intent intent = new Intent("android.intent.action.VIEW");
intent.setDataAndType(uri, "text/html");
return intent;
}
//android獲取一個用於打開圖片文件的intent
public static Intent getImageFileIntent( String param )
{
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(new File(param ));
intent.setDataAndType(uri, "image/*");
return intent;
}
//android獲取一個用於打開PDF文件的intent
public static Intent getPdfFileIntent( String param )
{
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(new File(param ));
intent.setDataAndType(uri, "application/pdf");
return intent;
}
//android獲取一個用於打開文本文件的intent
public static Intent getTextFileIntent( String paramString, boolean paramBoolean)
{
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (paramBoolean)
{
Uri uri1 = Uri.parse(param );
intent.setDataAndType(uri1, "text/plain");
}
while (true)
{
return intent;
Uri uri2 = Uri.fromFile(new File(param ));
intent.setDataAndType(uri2, "text/plain");
}
}
//android獲取一個用於打開音頻文件的intent
public static Intent getAudioFileIntent( String param )
{
Intent intent = new Intent("android.intent.action.VIEW");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("oneshot", 0);
intent.putExtra("configchange", 0);
Uri uri = Uri.fromFile(new File(param ));
intent.setDataAndType(uri, "audio/*");
return intent;
}
//android獲取一個用於打開視頻文件的intent
public static Intent getVideoFileIntent( String param )
{
Intent intent = new Intent("android.intent.action.VIEW");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("oneshot", 0);
intent.putExtra("configchange", 0);
Uri uri = Uri.fromFile(new File(param ));
intent.setDataAndType(uri, "video/*");
return intent;
}
//android獲取一個用於打開CHM文件的intent
public static Intent getChmFileIntent( String param )
{
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(new File(param ));
intent.setDataAndType(uri, "application/x-chm");
return intent;
}
//android獲取一個用於打開Word文件的intent
public static Intent getWordFileIntent( String param )
{
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(new File(param ));
intent.setDataAndType(uri, "application/msword");
return intent;
}
//android獲取一個用於打開Excel文件的intent
public static Intent getExcelFileIntent( String param )
{
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(new File(param ));
intent.setDataAndType(uri, "application/vnd.ms-excel");
return intent;
}
//android獲取一個用於打開PPT文件的intent
public static Intent getPptFileIntent( String param )
{
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(new File(param ));
intent.setDataAndType(uri, "application/vnd.ms-powerpoint");
return intent;
}