Android基于Poi生成Word
Posted Leonban
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android基于Poi生成Word相关的知识,希望对你有一定的参考价值。
一、前期准备
1、编写Word模板
2、下载poi相关jar包
将jar包导入到项目lib中
网上编写的生成word 文档 和 预览基本是一样的,难点在于正确的这两个库的寻找。word文档的生成基本不会有问题。下载地址:用于android生成Word的Poi 包https://download.csdn.net/download/Hearbeat/87380805
二、代码实现
private static final String newPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/doc/test.doc";
private static final String filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/doc";
public void Save()
try
//从assets读取Word模板
InputStream is = getAssets().open("调查报告模板.doc");/当前模板放到项目工程中assets目录
//创建生成的文件
File old = new File(newPath);
File newFile=null;
if(old.exists())
old.delete();
newFile=new File(newPath);
else
newFile=new File(newPath);
Map<String, String> map = new HashMap<String, String>();
map.put("$Name$", "李四");
writeDoc(is, newFile, map);
catch (IOException e)
e.printStackTrace();
Log.e(TAG, "Save: "+e.toString() );
/**
* newFile 生成文件
* map 要填充的数据
*/
public void writeDoc(InputStream in, File newFile, Map<String, String> map)
try
File file = new File(filePath);
if (!file.exists())
file.mkdirs();
HWPFDocument hdt = new HWPFDocument(in);
Range range = hdt.getRange();
// 替换文本内容
Log.e(TAG, "writeDoc: "+file.getAbsolutePath() );
for (Map.Entry<String, String> 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();
Log.e(TAG, "writeDoc: successs " );
catch (IOException e)
e.printStackTrace();
Log.e(TAG, "writeDoc: 1"+e.toString());
catch (Exception e)
e.printStackTrace();
Log.e(TAG, "writeDoc: 2"+e.toString());
自此Word可以生成并能够导出。
三、效果展示
以上是关于Android基于Poi生成Word的主要内容,如果未能解决你的问题,请参考以下文章
Android基于Spire.Doc.Android生成word
Android基于Spire.Doc.Android生成word