Androidテンプレートを使ってWord文書を作成して表示します.
22862 ワード
Androidがテンプレートを使ってWord文書を作成するには、Apache社が発売したApache POIを借りる必要があります.これは公式ダウンロードアドレスです.http://poi.apache.org/download.htmlこれはCSDNのダウンロードアドレスです.http://download.csdn.net/download/zhanglei280/10046152(なぜ現在のCSDNはポイントフリーダウンロードができないのか分かりません.最低は2ポイントです.ご了承ください.).
私たちが使用したいのはこの二つのjarパッケージです.ここで特に説明します.この二つのjarパッケージはword 2007版をサポートしていないので、2003版だけをサポートしています.つまり、docフォーマットだけがサポートしています.docxフォーマットはサポートしていません.だから、wordテンプレートを作ってください.docフォーマットの間違いがないようにしてください.
じゃ、これから私たちのプログラミングを始めます.プログラムは簡単です.コードを見ても分かります.
まずWordテンプレートのスタイルを見せます.みんなは自分のWordテンプレートをどうやって作成するか分かります..
以下のコードはWordテンプレートを使ってword文書を作成します.
ワードドキュメントの表示は、ワードドキュメントをHtmlに変換してWebViewを使って展示しています.
原文参照リンク:http://blog.csdn.net/u011916937/article/details/50085441
私たちが使用したいのはこの二つのjarパッケージです.ここで特に説明します.この二つのjarパッケージはword 2007版をサポートしていないので、2003版だけをサポートしています.つまり、docフォーマットだけがサポートしています.docxフォーマットはサポートしていません.だから、wordテンプレートを作ってください.docフォーマットの間違いがないようにしてください.
じゃ、これから私たちのプログラミングを始めます.プログラムは簡単です.コードを見ても分かります.
まずWordテンプレートのスタイルを見せます.みんなは自分のWordテンプレートをどうやって作成するか分かります..
以下のコードはWordテンプレートを使ってword文書を作成します.
package com.zl.zhifa.ui.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import com.zl.zhifa.R;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
public class InputDataActivity extends Activity {
//
private static final String newPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/doc/test.doc";
private static final String filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/doc";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_input_data);
}
/**
* newFile
* map
*/
public void writeDoc(InputStream in, File newFile, Map map) {
try {
File file = new File(filePath);
if (!file.exists()) {
file.mkdirs();
}
HWPFDocument hdt = new HWPFDocument(in);
// Fields fields = hdt.getFields();
// word
Range range = hdt.getRange();
// System.out.println(range.text());
//
for (Map.Entry entry : map.entrySet()) {
range.replaceText(entry.getKey(), entry.getValue());
}
ByteArrayOutputStream ostream = new ByteArrayOutputStream();
FileOutputStream out = new FileOutputStream(newFile, true);
hdt.write(ostream);
//
out.write(ostream.toByteArray());
out.close();
ostream.close();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Button
* @param view
*/
public void Save(View view) {
try {
// assets Word
InputStream is = getAssets().open("Name.doc");
//
File newFile = new File(newPath);
Map map = new HashMap();
map.put("$Name$", " ");
map.put("$Sex$", " ");
map.put("$Address$", " xx xx ");
writeDoc(is, newFile, map);
} catch (IOException e) {
e.printStackTrace();
}
}
public void Open(View view) {
startActivity(new Intent(InputDataActivity.this, WebViewActivity.class));
}
}
これはどうやってWord文書のコードを調べますか?ワードドキュメントの表示は、ワードドキュメントをHtmlに変換してWebViewを使って展示しています.
package com.zl.zhifa.ui.activity;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.webkit.WebSettings;
import android.webkit.WebView;
import com.zl.zhifa.R;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.converter.PicturesManager;
import org.apache.poi.hwpf.converter.WordToHtmlConverter;
import org.apache.poi.hwpf.usermodel.Picture;
import org.apache.poi.hwpf.usermodel.PictureType;
import org.w3c.dom.Document;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.List;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
public class WebViewActivity extends Activity {
//
private String docPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/doc/";
//
private String docName = "test.doc";
//html
private String savePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/doc/";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
String name = docName.substring(0, docName.indexOf("."));
try {
convert2Html(docPath + docName, savePath + name + ".html");
} catch (Exception e) {
e.printStackTrace();
}
//WebView html
WebView webView = (WebView) this.findViewById(R.id.office);
WebSettings webSettings = webView.getSettings();
webSettings.setLoadWithOverviewMode(true);
webSettings.setSupportZoom(true);
webSettings.setBuiltInZoomControls(true);
// , Html “file:///”
webView.loadUrl("file:///" + savePath + name + ".html");
}
/**
* word html
*/
public void convert2Html(String fileName, String outPutFile) {
HWPFDocument wordDocument = null;
try {
wordDocument = new HWPFDocument(new FileInputStream(fileName));
WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(
DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());
//
wordToHtmlConverter.setPicturesManager(new PicturesManager() {
public String savePicture(byte[] content,
PictureType pictureType, String suggestedName,
float widthInches, float heightInches) {
String name = docName.substring(0, docName.indexOf("."));
return name + "/" + suggestedName;
}
});
//
List
これは効果図です.見せてください. .原文参照リンク:http://blog.csdn.net/u011916937/article/details/50085441