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 pics = wordDocument.getPicturesTable().getAllPictures();
if (pics != null) {
for (int i = 0; i < pics.size(); i++) {
Picture pic = (Picture) pics.get(i);
System.out.println(pic.suggestFullFileName());
try {
String name = docName.substring(0, docName.indexOf("."));
String file = savePath + name + "/"
+ pic.suggestFullFileName();
File mFile = new File(file);
if (mFile.exists()) {
mFile.delete();
}
mFile.mkdirs();
pic.writeImageContent(new FileOutputStream(file));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
wordToHtmlConverter.processDocument(wordDocument);
Document htmlDocument = wordToHtmlConverter.getDocument();
ByteArrayOutputStream out = new ByteArrayOutputStream();
DOMSource domSource = new DOMSource(htmlDocument);
StreamResult streamResult = new StreamResult(out);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer serializer = tf.newTransformer();
serializer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
serializer.setOutputProperty(OutputKeys.INDENT, "yes");
serializer.setOutputProperty(OutputKeys.METHOD, "html");
serializer.transform(domSource, streamResult);
out.close();
// html
writeFile(new String(out.toByteArray()), outPutFile);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* html sd
*/
public void writeFile(String content, String path) {
FileOutputStream fos = null;
BufferedWriter bw = null;
try {
File file = new File(path);
if (!file.exists()) {
file.createNewFile();
}
fos = new FileOutputStream(file);
bw = new BufferedWriter(new OutputStreamWriter(fos, "utf-8"));
bw.write(content);
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
try {
if (bw != null)
bw.close();
if (fos != null)
fos.close();
} catch (IOException ie) {
}
}
}
}
これは効果図です.見せてください.

原文参照リンク:http://blog.csdn.net/u011916937/article/details/50085441