android操作word之替换word文档中的内容.
所需jar包下载地址:http://download.csdn.net/detail/l1976135784/7180033
代码结构图:
res/raw/下的ljp.doc是word模版,内容如下:
代码如下:
package com.example.readandwritedoc; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.model.FieldsDocumentPart; import org.apache.poi.hwpf.usermodel.Field; import org.apache.poi.hwpf.usermodel.Fields; import org.apache.poi.hwpf.usermodel.Range; import android.os.Bundle; import android.app.Activity; import android.content.res.Resources; import android.view.Menu; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Map<String, String> map=new HashMap<String, String>(); map.put("title", "要不要换个网名的博客"); map.put("blog_name", "l1976135784"); map.put("domain_name", "http://blog.csdn.net/laijunpeng"); map.put("description", "做一天程序撞一天钟,平常的学习笔记,IT博客。"); this.writeDoc(map); } public void writeDoc(Map<String, String> map) { try { //读取word模板 Resources res = super.getResources(); InputStream in = res.openRawResource(R.raw.ljp); HWPFDocument hdt = new HWPFDocument(in); Fields fields = hdt.getFields(); Iterator<Field> it = fields.getFields(FieldsDocumentPart.MAIN).iterator(); while(it.hasNext()){ System.out.println(it.next().getType()); } //读取word文本内容 Range range = hdt.getRange(); System.out.println(range.text()); //替换文本内容 for (Map.Entry<String,String> entry:map.entrySet()) { range.replaceText(entry.getKey(),entry.getValue()); } ByteArrayOutputStream ostream = new ByteArrayOutputStream(); String fileName = ""+System.currentTimeMillis(); fileName += ".doc"; FileOutputStream out = new FileOutputStream("/sdcard/"+fileName,true); Toast.makeText(this, "成功保存到sdcard目录下", Toast.LENGTH_LONG).show(); hdt.write(ostream); //输出字节流 out.write(ostream.toByteArray()); out.close(); ostream.close(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }