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

poi-tl——Word模板生成器

java用poi生成word文档,并且给word文档中的中文设置字体,我测试只能改英文字体?

Word 模板引擎 poi-tl

java poi 生成word表格怎么 让表格填充整个页面和合并单元格