精华内容
下载资源
问答
  • Word文档编辑转换app是一款非常具有实际意义的文档模板类型转换工具,众多强大功能提供Word编辑,支持在线管理文档,随时随地的高效办公,让你的工作更加的具有效率,还有许多有趣实用的功能等你来体验,感兴趣的小...

    Word文档编辑转换app是一款非常具有实际意义的文档模板类型转换工具,众多强大功能提供Word编辑,支持在线管理文档,随时随地的高效办公,让你的工作更加的具有效率,还有许多有趣实用的功能等你来体验,感兴趣的小伙伴快下载使用吧!

    3c62c3c466bb5a4587251a240a79e15b.png

    Word文档编辑转换软件特色

    「升职加薪」界面清爽,操作简单,助你分分钟实现效率办公,升职加薪不是梦!

    「提高效率」崭新界面设计全面开启,提高办公效率

    「提升技能」Word文档编辑经验学习,让你不断提升制作技能

    「免费资源」超强素材,让你享受,资源丰富,高质量,免费资源

    「视频教程」带word视频教程学习,跟着大师学技能

    「图文并茂」图文并茂word文档编辑教程学习,让你学习不单调

    Word文档编辑转换小编点评

    专业的Word文档编辑、文档格式转换、文档模板提供的办公软件app。

    《新建文档》点击新建文档,自由编辑导出文档

    《文档模板下载》海量word文档模板,随意下载打开使用

    《文档格式转换》支持PDF转word、word转PDF、PDF加水印等强大功能

    《快捷键&Word使用技巧》快捷键大全查看与Word使用技巧,使你的工作更加高效

    Word文档编辑转换更新日志

    修复已知bug

    展开全文
  • Android 使用模板生成Word文档,支持手机直接查看word

    万次阅读 热门讨论 2015-11-28 17:00:06
    最近在项目工作中,碰到一个很棘手的需求,说是要在手机端根据模板生成word文档,而且不借助第三方的软件可以查看word文档,一开始听这个需求差不多蒙了,这要怎么做,为什么不把生成word文档这个工作放在后台呢,...
          最近在项目工作中,碰到一个很棘手的需求,说是要在手机端根据模板生成word文档,而且不借助第三方的软件可以查看word文档,一开始听这个需求差不多蒙了,这要怎么做,为什么不把生成word文档这个工作放在后台呢,抱怨归抱怨,但是面对需求只能硬着头皮做了,经过各种拷问度娘和谷哥,终于找了一个比较好用的方法。特此跟他家分享。 
    

           Apache 公司推出的 Apache POI,我们来看下他的介绍:Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。

           废话少说开始编码,首先我们要下Apache POI的开发jar包,下载地址:http://poi.apache.org/download.html,这里推荐不要下最新版本的,因为一开始我用最新版本的会出一下莫名其妙的问题,后面换旧的版本就OK了。这里我用的是3.9的还是比较稳定的、


            开发有2个包,有一点我就非常郁闷Apache居然没有提供api稳定,开发起来还是比较蛋疼的,可能是我自己没有找到把,如果有知道的筒子可以@我、嘿嘿。不过Apache还是提供了Demo大家可以参考。还有我们要准备我们使用的word模板文件、这里我们放在了assets下面了。首先我们来看看怎么使用模板:

    package com.test.poiword;
    
    import android.app.Activity;
    import android.content.ActivityNotFoundException;
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.Toast;
    
    import com.test.poiword.utils.FileUtils;
    
    import org.apache.poi.hwpf.HWPFDocument;
    import org.apache.poi.hwpf.usermodel.Range;
    
    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.util.HashMap;
    import java.util.Map;
    
    public class MainActivity extends Activity {
        // 模板文集地址
        private static final String demoPath =  "/mnt/sdcard/doc/test.doc";
        // 创建生成的文件地址
        private static final String newPath = "/mnt/sdcard/doc/testS.doc";
        private Button btn,btns;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            btn=(Button)findViewById(R.id.btn);
            btns=(Button)findViewById(R.id.btns);
            btn.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View arg0) {
                    try {
                        InputStream inputStream = getAssets().open("test.doc");
                        FileUtils.writeFile(new File(demoPath), inputStream);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    doScan();
                }
            });
            btns.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View arg0) {
                    Intent intent = new Intent(MainActivity.this,WordHtmlActivity.class);
                    startActivity(intent);
                }
            });
    
        }
    
        private void doScan(){
            //获取模板文件
            File demoFile=new File(demoPath);
            //创建生成的文件
            File newFile=new File(newPath);
            Map<String, String> map = new HashMap<String, String>();
            map.put("$QYMC$", "xxx科技股份有限公司");
            map.put("$QYDZ$", "上海市杨浦区xx路xx号");
            map.put("$QYFZR$", "张三");
            map.put("$FRDB$", "李四");
            map.put("$CJSJ$", "2000-11-10");
            map.put("$SCPZMSJWT$", "5");
            map.put("$XCJCJBQ$", "6");
            map.put("$JLJJJFF$", "7");
            map.put("$QYFZRQM$", "张三");
            map.put("$CPRWQM$", "赵六");
            map.put("$ZFZH$", "100001");
            map.put("$BZ$", "无");
            writeDoc(demoFile,newFile,map);
            //查看
            doOpenWord();
        }
        /**
         * 调用手机中安装的可打开word的软件
         */
        private void doOpenWord(){
            Intent intent = new Intent();
            intent.setAction("android.intent.action.VIEW");
            intent.addCategory("android.intent.category.DEFAULT");
            String fileMimeType = "application/msword";
            intent.setDataAndType(Uri.fromFile(new File(newPath)), fileMimeType);
            try{
                MainActivity.this.startActivity(intent);
            } catch(ActivityNotFoundException e) {
                //检测到系统尚未安装OliveOffice的apk程序
                Toast.makeText(MainActivity.this, "未找到软件", Toast.LENGTH_LONG).show();
                //请先到www.olivephone.com/e.apk下载并安装
            }
        }
        /**
         * demoFile 模板文件
         * newFile 生成文件
         * map 要填充的数据
         * */
        public void writeDoc(File demoFile ,File newFile ,Map<String, String> map)
        {
            try
            {
                FileInputStream in = new FileInputStream(demoFile);
                HWPFDocument hdt = new HWPFDocument(in);
                // Fields fields = hdt.getFields();
                // 读取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();
                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();
            }
        }
    
    }
    

             上面代码的代码并不多,首先我们要注意的是我们使用的poi的api大部分是在org.apache.poi.hwpf下面的,大家不要导错包了,因为apache每个包对应的内容不同:

              上面代码不难懂,就是把我们要放的内容使用特定的代号组装一个map塞到我们的模板里面去,然后重新存储下,不过我们模板也要使用相同的代号、poi才能识别:

            这样我们就使用模板大功告成了,就可以查看了、但是有些手机并没有装wps类似的工具,要是手机可以直接查看那就好了,嘿嘿、当然apache肯定也想到了、提供了这样的api下面上代码:

    package com.test.poiword;
    
    import android.os.Bundle;
    import android.support.v4.app.FragmentActivity;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    
    import com.test.poiword.utils.FileUtils;
    
    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;
    
    /**
     * Created by fuweiwei on 2015/11/28.
     */
    public class WordHtmlActivity extends FragmentActivity {
        //文件存储位置
        private String docPath = "/mnt/sdcard/doc/";
        //文件名称
        private String docName = "test.doc";
        //html文件存储位置
        private String savePath = "/mnt/sdcard/doc/";
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.html);
            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);
            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<Picture> 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();
                            FileUtils.makeDirs(file);
                            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) {
                }
            }
        }
    }
    

            上面的代码的原理起始也很简单,poi提供了让word文档转换成html页面的方法、我们只需要使用webview来加载这个html就ok了,这样我们就可以再手机端直接查看我们的word文档了,是不是好强大。其实看起来的比较复杂的功能只要我们静下心来想想就没有我们想象中的那么复杂,今天就为大家分享到这了。下面有Demo的源码。




    源码下载



    展开全文
  • 链接:https://download.csdn.net/download/auspicious_air/10942678 断网状态下输入序列号Name: SolidConverterPDFv9E-mail: user@ru.ruOrganization: anyUnlock Code: KTGK

    链接1:https://download.csdn.net/download/Auspicious_air/18661582

    链接2:https://download.csdn.net/download/Auspicious_air/18661338


    链接1的注册信息如下:

    断网状态下输入序列号
    Name: SolidConverterPDFv9
    E-mail: user@ru.ru
    Organization: any
    Unlock Code: KTGK

    展开全文
  • android输出word文档

    千次阅读 2017-08-28 13:44:05
    最近在项目工作中,碰到一个很棘手的需求,说是要在手机端根据模板生成word文档,而且不借助第三方的软件可以查看word文档,一开始听这个需求差不多蒙了,这要怎么做,为什么不把生成word文档这个工作放在后台呢,...
    最近在项目工作中,碰到一个很棘手的需求,说是要在手机端根据模板生成word文档,而且不借助第三方的软件可以查看word文档,一开始听这个需求差不多蒙了,这要怎么做,为什么不把生成word文档这个工作放在后台呢,抱怨归抱怨,但是面对需求只能硬着头皮做了,经过各种拷问度娘和谷哥,终于找了一个比较好用的方法。特此跟他家分享。 
    

           Apache 公司推出的 Apache POI,我们来看下他的介绍:Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。

           废话少说开始编码,首先我们要下Apache POI的开发jar包,下载地址:http://poi.apache.org/download.html,这里推荐不要下最新版本的,因为一开始我用最新版本的会出一下莫名其妙的问题,后面换旧的版本就OK了。这里我用的是3.9的还是比较稳定的、


            开发有2个包,有一点我就非常郁闷Apache居然没有提供api稳定,开发起来还是比较蛋疼的,可能是我自己没有找到把,如果有知道的筒子可以@我、嘿嘿。不过Apache还是提供了Demo大家可以参考。还有我们要准备我们使用的word模板文件、这里我们放在了assets下面了。首先我们来看看怎么使用模板:

    1. package com.test.poiword;  
    2.   
    3. import android.app.Activity;  
    4. import android.content.ActivityNotFoundException;  
    5. import android.content.Intent;  
    6. import android.net.Uri;  
    7. import android.os.Bundle;  
    8. import android.view.View;  
    9. import android.view.View.OnClickListener;  
    10. import android.widget.Button;  
    11. import android.widget.Toast;  
    12.   
    13. import com.test.poiword.utils.FileUtils;  
    14.   
    15. import org.apache.poi.hwpf.HWPFDocument;  
    16. import org.apache.poi.hwpf.usermodel.Range;  
    17.   
    18. import java.io.ByteArrayOutputStream;  
    19. import java.io.File;  
    20. import java.io.FileInputStream;  
    21. import java.io.FileOutputStream;  
    22. import java.io.IOException;  
    23. import java.io.InputStream;  
    24. import java.util.HashMap;  
    25. import java.util.Map;  
    26.   
    27. public class MainActivity extends Activity {  
    28.     // 模板文集地址  
    29.     private static final String demoPath =  "/mnt/sdcard/doc/test.doc";  
    30.     // 创建生成的文件地址  
    31.     private static final String newPath = "/mnt/sdcard/doc/testS.doc";  
    32.     private Button btn,btns;  
    33.     @Override  
    34.     protected void onCreate(Bundle savedInstanceState) {  
    35.         super.onCreate(savedInstanceState);  
    36.         setContentView(R.layout.activity_main);  
    37.         btn=(Button)findViewById(R.id.btn);  
    38.         btns=(Button)findViewById(R.id.btns);  
    39.         btn.setOnClickListener(new OnClickListener() {  
    40.   
    41.             @Override  
    42.             public void onClick(View arg0) {  
    43.                 try {  
    44.                     InputStream inputStream = getAssets().open("test.doc");  
    45.                     FileUtils.writeFile(new File(demoPath), inputStream);  
    46.                 } catch (Exception e) {  
    47.                     e.printStackTrace();  
    48.                 }  
    49.                 doScan();  
    50.             }  
    51.         });  
    52.         btns.setOnClickListener(new OnClickListener() {  
    53.   
    54.             @Override  
    55.             public void onClick(View arg0) {  
    56.                 Intent intent = new Intent(MainActivity.this,WordHtmlActivity.class);  
    57.                 startActivity(intent);  
    58.             }  
    59.         });  
    60.   
    61.     }  
    62.   
    63.     private void doScan(){  
    64.         //获取模板文件  
    65.         File demoFile=new File(demoPath);  
    66.         //创建生成的文件  
    67.         File newFile=new File(newPath);  
    68.         Map<String, String> map = new HashMap<String, String>();  
    69.         map.put("$QYMC$", "xxx科技股份有限公司");  
    70.         map.put("$QYDZ$", "上海市杨浦区xx路xx号");  
    71.         map.put("$QYFZR$", "张三");  
    72.         map.put("$FRDB$", "李四");  
    73.         map.put("$CJSJ$", "2000-11-10");  
    74.         map.put("$SCPZMSJWT$", "5");  
    75.         map.put("$XCJCJBQ$", "6");  
    76.         map.put("$JLJJJFF$", "7");  
    77.         map.put("$QYFZRQM$", "张三");  
    78.         map.put("$CPRWQM$", "赵六");  
    79.         map.put("$ZFZH$", "100001");  
    80.         map.put("$BZ$", "无");  
    81.         writeDoc(demoFile,newFile,map);  
    82.         //查看  
    83.         doOpenWord();  
    84.     }  
    85.     /**  
    86.      * 调用手机中安装的可打开word的软件  
    87.      */  
    88.     private void doOpenWord(){  
    89.         Intent intent = new Intent();  
    90.         intent.setAction("android.intent.action.VIEW");  
    91.         intent.addCategory("android.intent.category.DEFAULT");  
    92.         String fileMimeType = "application/msword";  
    93.         intent.setDataAndType(Uri.fromFile(new File(newPath)), fileMimeType);  
    94.         try{  
    95.             MainActivity.this.startActivity(intent);  
    96.         } catch(ActivityNotFoundException e) {  
    97.             //检测到系统尚未安装OliveOffice的apk程序  
    98.             Toast.makeText(MainActivity.this, "未找到软件", Toast.LENGTH_LONG).show();  
    99.             //请先到www.olivephone.com/e.apk下载并安装  
    100.         }  
    101.     }  
    102.     /**  
    103.      * demoFile 模板文件  
    104.      * newFile 生成文件  
    105.      * map 要填充的数据  
    106.      * */  
    107.     public void writeDoc(File demoFile ,File newFile ,Map<String, String> map)  
    108.     {  
    109.         try  
    110.         {  
    111.             FileInputStream in = new FileInputStream(demoFile);  
    112.             HWPFDocument hdt = new HWPFDocument(in);  
    113.             // Fields fields = hdt.getFields();  
    114.             // 读取word文本内容  
    115.             Range range = hdt.getRange();  
    116.             // System.out.println(range.text());  
    117.   
    118.             // 替换文本内容  
    119.             for(Map.Entry<String, String> entry : map.entrySet())  
    120.             {  
    121.                 range.replaceText(entry.getKey(), entry.getValue());  
    122.             }  
    123.             ByteArrayOutputStream ostream = new ByteArrayOutputStream();  
    124.             FileOutputStream out = new FileOutputStream(newFile, true);  
    125.             hdt.write(ostream);  
    126.             // 输出字节流  
    127.             out.write(ostream.toByteArray());  
    128.             out.close();  
    129.             ostream.close();  
    130.         }  
    131.         catch(IOException e)  
    132.         {  
    133.             e.printStackTrace();  
    134.         }  
    135.         catch(Exception e)  
    136.         {  
    137.             e.printStackTrace();  
    138.         }  
    139.     }  
    140.   
    141. }  
    package com.test.poiword;import android.app.Activity;import android.content.ActivityNotFoundException;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;import com.test.poiword.utils.FileUtils;import org.apache.poi.hwpf.HWPFDocument;import org.apache.poi.hwpf.usermodel.Range;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.util.HashMap;import java.util.Map;public class MainActivity extends Activity {    // 模板文集地址    private static final String demoPath =  "/mnt/sdcard/doc/test.doc";    // 创建生成的文件地址    private static final String newPath = "/mnt/sdcard/doc/testS.doc";    private Button btn,btns;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        btn=(Button)findViewById(R.id.btn);        btns=(Button)findViewById(R.id.btns);        btn.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View arg0) {                try {                    InputStream inputStream = getAssets().open("test.doc");                    FileUtils.writeFile(new File(demoPath), inputStream);                } catch (Exception e) {                    e.printStackTrace();                }                doScan();            }        });        btns.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View arg0) {                Intent intent = new Intent(MainActivity.this,WordHtmlActivity.class);                startActivity(intent);            }        });    }    private void doScan(){        //获取模板文件        File demoFile=new File(demoPath);        //创建生成的文件        File newFile=new File(newPath);        Map<String, String> map = new HashMap<String, String>();        map.put("$QYMC$", "xxx科技股份有限公司");        map.put("$QYDZ$", "上海市杨浦区xx路xx号");        map.put("$QYFZR$", "张三");        map.put("$FRDB$", "李四");        map.put("$CJSJ$", "2000-11-10");        map.put("$SCPZMSJWT$", "5");        map.put("$XCJCJBQ$", "6");        map.put("$JLJJJFF$", "7");        map.put("$QYFZRQM$", "张三");        map.put("$CPRWQM$", "赵六");        map.put("$ZFZH$", "100001");        map.put("$BZ$", "无");        writeDoc(demoFile,newFile,map);        //查看        doOpenWord();    }    /**     * 调用手机中安装的可打开word的软件     */    private void doOpenWord(){        Intent intent = new Intent();        intent.setAction("android.intent.action.VIEW");        intent.addCategory("android.intent.category.DEFAULT");        String fileMimeType = "application/msword";        intent.setDataAndType(Uri.fromFile(new File(newPath)), fileMimeType);        try{            MainActivity.this.startActivity(intent);        } catch(ActivityNotFoundException e) {            //检测到系统尚未安装OliveOffice的apk程序            Toast.makeText(MainActivity.this, "未找到软件", Toast.LENGTH_LONG).show();            //请先到www.olivephone.com/e.apk下载并安装        }    }    /**     * demoFile 模板文件     * newFile 生成文件     * map 要填充的数据     * */    public void writeDoc(File demoFile ,File newFile ,Map<String, String> map)    {        try        {            FileInputStream in = new FileInputStream(demoFile);            HWPFDocument hdt = new HWPFDocument(in);            // Fields fields = hdt.getFields();            // 读取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();            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();        }    }}

             上面代码的代码并不多,首先我们要注意的是我们使用的poi的api大部分是在org.apache.poi.hwpf下面的,大家不要导错包了,因为apache每个包对应的内容不同:

              上面代码不难懂,就是把我们要放的内容使用特定的代号组装一个map塞到我们的模板里面去,然后重新存储下,不过我们模板也要使用相同的代号、poi才能识别:

            这样我们就使用模板大功告成了,就可以查看了、但是有些手机并没有装wps类似的工具,要是手机可以直接查看那就好了,嘿嘿、当然apache肯定也想到了、提供了这样的api下面上代码:

    1. package com.test.poiword;  
    2.   
    3. import android.os.Bundle;  
    4. import android.support.v4.app.FragmentActivity;  
    5. import android.webkit.WebSettings;  
    6. import android.webkit.WebView;  
    7.   
    8. import com.test.poiword.utils.FileUtils;  
    9.   
    10. import org.apache.poi.hwpf.HWPFDocument;  
    11. import org.apache.poi.hwpf.converter.PicturesManager;  
    12. import org.apache.poi.hwpf.converter.WordToHtmlConverter;  
    13. import org.apache.poi.hwpf.usermodel.Picture;  
    14. import org.apache.poi.hwpf.usermodel.PictureType;  
    15. import org.w3c.dom.Document;  
    16.   
    17. import java.io.BufferedWriter;  
    18. import java.io.ByteArrayOutputStream;  
    19. import java.io.File;  
    20. import java.io.FileInputStream;  
    21. import java.io.FileNotFoundException;  
    22. import java.io.FileOutputStream;  
    23. import java.io.IOException;  
    24. import java.io.OutputStreamWriter;  
    25. import java.util.List;  
    26.   
    27. import javax.xml.parsers.DocumentBuilderFactory;  
    28. import javax.xml.transform.OutputKeys;  
    29. import javax.xml.transform.Transformer;  
    30. import javax.xml.transform.TransformerFactory;  
    31. import javax.xml.transform.dom.DOMSource;  
    32. import javax.xml.transform.stream.StreamResult;  
    33.   
    34. /**  
    35.  * Created by fuweiwei on 2015/11/28.  
    36.  */  
    37. public class WordHtmlActivity extends FragmentActivity {  
    38.     //文件存储位置  
    39.     private String docPath = "/mnt/sdcard/doc/";  
    40.     //文件名称  
    41.     private String docName = "test.doc";  
    42.     //html文件存储位置  
    43.     private String savePath = "/mnt/sdcard/doc/";  
    44.     @Override  
    45.     protected void onCreate(Bundle savedInstanceState) {  
    46.         super.onCreate(savedInstanceState);  
    47.         setContentView(R.layout.html);  
    48.         String name = docName.substring(0, docName.indexOf("."));  
    49.         try {  
    50.             convert2Html(docPath + docName, savePath + name + ".html");  
    51.         } catch (Exception e) {  
    52.             e.printStackTrace();  
    53.         }  
    54.         //WebView加载显示本地html文件  
    55.         WebView webView = (WebView)this.findViewById(R.id.office);  
    56.         WebSettings webSettings = webView.getSettings();  
    57.         webSettings.setLoadWithOverviewMode(true);  
    58.         webSettings.setSupportZoom(true);  
    59.         webSettings.setBuiltInZoomControls(true);  
    60.         webView.loadUrl("file:/"+savePath+name+".html");  
    61.     }  
    62.   
    63.     /**  
    64.      * word文档转成html格式  
    65.      * */  
    66.     public void convert2Html(String fileName, String outPutFile) {  
    67.         HWPFDocument wordDocument = null;  
    68.         try {  
    69.             wordDocument = new HWPFDocument(new FileInputStream(fileName));  
    70.             WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(  
    71.                     DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());  
    72.             //设置图片路径  
    73.             wordToHtmlConverter.setPicturesManager(new PicturesManager() {  
    74.                 public String savePicture(byte[] content,  
    75.                                           PictureType pictureType, String suggestedName,  
    76.                                           float widthInches, float heightInches) {  
    77.                     String name = docName.substring(0, docName.indexOf("."));  
    78.                     return name + "/" + suggestedName;  
    79.                 }  
    80.             });  
    81.             //保存图片  
    82.             List<Picture> pics=wordDocument.getPicturesTable().getAllPictures();  
    83.             if(pics!=null){  
    84.                 for(int i=0;i<pics.size();i++){  
    85.                     Picture pic = (Picture)pics.get(i);  
    86.                     System.out.println( pic.suggestFullFileName());  
    87.                     try {  
    88.                         String name = docName.substring(0,docName.indexOf("."));  
    89.                         String file = savePath+ name + "/"  
    90.                                 + pic.suggestFullFileName();  
    91.                         FileUtils.makeDirs(file);  
    92.                         pic.writeImageContent(new FileOutputStream(file));  
    93.                     } catch (FileNotFoundException e) {  
    94.                         e.printStackTrace();  
    95.                     }  
    96.                 }  
    97.             }  
    98.             wordToHtmlConverter.processDocument(wordDocument);  
    99.             Document htmlDocument = wordToHtmlConverter.getDocument();  
    100.             ByteArrayOutputStream out = new ByteArrayOutputStream();  
    101.             DOMSource domSource = new DOMSource(htmlDocument);  
    102.             StreamResult streamResult = new StreamResult(out);  
    103.   
    104.             TransformerFactory tf = TransformerFactory.newInstance();  
    105.             Transformer serializer = tf.newTransformer();  
    106.             serializer.setOutputProperty(OutputKeys.ENCODING, "utf-8");  
    107.             serializer.setOutputProperty(OutputKeys.INDENT, "yes");  
    108.             serializer.setOutputProperty(OutputKeys.METHOD, "html");  
    109.             serializer.transform(domSource, streamResult);  
    110.             out.close();  
    111.             //保存html文件  
    112.             writeFile(new String(out.toByteArray()), outPutFile);  
    113.         } catch (Exception e) {  
    114.             e.printStackTrace();  
    115.         }  
    116.     }  
    117.   
    118.     /**  
    119.      * 将html文件保存到sd卡  
    120.      * */  
    121.     public void writeFile(String content, String path) {  
    122.         FileOutputStream fos = null;  
    123.         BufferedWriter bw = null;  
    124.         try {  
    125.             File file = new File(path);  
    126.             if(!file.exists()){  
    127.                 file.createNewFile();  
    128.             }  
    129.             fos = new FileOutputStream(file);  
    130.             bw = new BufferedWriter(new OutputStreamWriter(fos,"utf-8"));  
    131.             bw.write(content);  
    132.         } catch (FileNotFoundException fnfe) {  
    133.             fnfe.printStackTrace();  
    134.         } catch (IOException ioe) {  
    135.             ioe.printStackTrace();  
    136.         } finally {  
    137.             try {  
    138.                 if (bw != null)  
    139.                     bw.close();  
    140.                 if (fos != null)  
    141.                     fos.close();  
    142.             } catch (IOException ie) {  
    143.             }  
    144.         }  
    145.     }  
    146. }  
    package com.test.poiword;import android.os.Bundle;import android.support.v4.app.FragmentActivity;import android.webkit.WebSettings;import android.webkit.WebView;import com.test.poiword.utils.FileUtils;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;/** * Created by fuweiwei on 2015/11/28. */public class WordHtmlActivity extends FragmentActivity {    //文件存储位置    private String docPath = "/mnt/sdcard/doc/";    //文件名称    private String docName = "test.doc";    //html文件存储位置    private String savePath = "/mnt/sdcard/doc/";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.html);        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);        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<Picture> 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();                        FileUtils.makeDirs(file);                        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) {            }        }    }}

            上面的代码的原理起始也很简单,poi提供了让word文档转换成html页面的方法、我们只需要使用webview来加载这个html就ok了,这样我们就可以再手机端直接查看我们的word文档了,是不是好强大。其实看起来的比较复杂的功能只要我们静下心来想想就没有我们想象中的那么复杂,今天就为大家分享到这了。下面有Demo的源码。
    展开全文
  • 手机版豆丁书房下载文档在哪儿

    千次阅读 2018-07-18 17:59:26
    在我们查找资料时,需要下载一些文档,有时是豆丁书房的,但电脑上不能免费下载手机版是可以注册后免费下载的,但下载到了手机什么位置及如何拷贝出来电脑上看?下面引用摘自豆丁吧热心网1友回答。 在:sdcard/...
  • 那么是不是说损坏的Word文档就没法恢复了呢?那也不一定,下面就让小编来给大家支招。 遇到这种情况,千万别着急,安装数据恢复软件——EasyRecovery就可以了。利用其深度数据恢复的功能特
  • 职场中难免会遇到各种各样的文档格式,根据不同场景的不同需求对这些文件格式进行转换也是常有的事,今天小编就来跟大家分享一个超简单的方法,一分钟就能完成PDF文件转Word,而且不花一分钱,领导同事都夸奖。...
  • 而PDF转Word功能,对于文案工作者而言,也是一个超级实用、必须Get到的技能。如何理解呢?来来来,先给大家说一个职场小白的故事。23岁的小猴是个不爱动脑筋的职场小白,二本大学中文系毕业,稀里糊涂被招进了一家...
  • word编辑文档工具app是一款非常轻简的办公软件,可以在线编辑文档、修改格式,支持多种文档格式在线查看,高效方便,是上班族、学生党的必备软件。软件亮点1.实用办公模板中英文求职自荐信,高效套用。2.从入门到...
  • PDF编辑器手机版已经问世啦,PDF编辑器不仅电脑可以使用,手机也可以使用,PDF编辑功能基本可以涵盖大家的需求。特别要提到的是,手机版的PDF编辑器还支持一键将PDF转成Word文件,这样大家就根本不需要再去安装PDF...
  • 虽然目前编写和展示文本的方式有很多,文档格式也非常多,但相对来说Word格式的文档依然还是我们最常用,操作最熟悉的,那么如何把其他格式转换成我们需要的Word文档呢? 方法1:文字识别 这种方法比较常用于日常...
  • Microsoft Word is part of Microsoft Office and requires an up-front purchase or a Microsoft 365 subscription. If you’re using a computer without Word installed, there are other ways to view that DOCX...
  • 对于职场办公来说,PDF文件成为大家越来越常用的一种文件格式,原因也很简单:PDF格式适配各种手机、电脑,排版固定,携带方便。但有时候优点往往就会变成“缺点”。“怎么把PDF文件转换成word?”“我有一份PDF文件...
  • 阅读本文前,请您先点击上面的“蓝色字体”,再点击“关注”,这样您就可以继续免费收到文章了。每天都会有分享,都是免费订阅,请您放心关注。注图文来源网络,侵删 ...
  • 最近客户转战手机端办公,问题来了,电脑上能打开的word,到了手机上就打不开了。freemarker生成的word的文件类型是Microsoft Office Word 97 - 2003 文档的。 自己创建的word手机上是可以打开的。问题出在哪? **...
  • 文档下载工具

    2020-11-10 14:49:51
    道客巴巴.book115的文档,只要是能看到的就可以下载,但是下载下来的文档是pdf版本的,但是我们会教你怎么把pdf的转换成word的版本,接下来仔细看下面的教程 第一步 先下载破解软件,这个软件是
  • PDF在线转换器是一种可以转换各种常见办公文档的线上转换平台,支持一站式解决日常工作中绝大部分的文档转换需求。除此之外,在线迅捷PDF转换器还提供PDF文档处理,编辑、文本在线翻译、OCR识别、流程图制作等高频...
  • 百度文库文档下载

    万次阅读 2017-08-26 17:27:42
    无意中看到的一个方法,就是在地址前面加上wap这三个字母进入wap的文库.便可复制了.举个例子. ‍下面这是一个文档: http://wenku.baidu.com/view/b9ee0694dd88d0d233d46a00.html然后这样,wenku前加上wap这三个字母...
  • 苹果手机怎么使用word

    千次阅读 2017-05-19 01:26:17
    1. 首先通过AppStore安装...2. 打开Quick Office,底下的Tab栏上有个wifi的图标,点击一下,就自动在局域网启动了一个服务器,你可以在你的电脑上,通过QuickOffice给你的地址,访问你的手机,然后把word文档上传上
  • 手机上怎么把Word转换为PDF

    千次阅读 2018-10-23 09:22:48
    大家经常会需要将Word文档转换为PDF的,电脑上也有很多的在线转换工具,当然如果你使用的是Word2017以上的版本也是可以直接另存为PDF格式的,但是要是电脑不在身边、或者是下班时间呢?其实Word转换PDF也可以在手机...
  • WordZ: Word终结者, 基于Google API开发的文档自动化产品。可用于线上合同,发票,所有有关文档的业务流程。主要功能包含,创建,复制文档,填充变量,导出word,导出pdf等一系列优秀功能 工作了那么多年,我在...
  • 比如桌面Office就存在一些功能缺失:需要网络随时保持在线、不能保存桌面生成的文档、表格过大打开的时候卡死、多文档同时编辑板式不一致等,最关键的是在线Office服务很难整合到自己公司的OA、GRM、ERP中去,最好...
  • 目前,88%的美国 网民都在网购,未来还会继续上升,最终会趋于 99%以上加拿大的智能手机和互联网普及广泛,同样是美国跨境电商的主要市场之一,很大一个原因在于加拿大的税率相比美国来讲要优惠很多。另外,加拿大...
  • 有时一些PDF资料需要修改才能使用,电脑的修改已经很复杂了,更何况手机端安装软件和使用都更困难,而且有一些PDF文档本身就是扫描无法进行修改,那么我们就只能将PDF转成Word后再编辑。 目前一些能搜索的免费...
  • 今天给教大家用axure做一个产品需求文档(PRD)模板,其中包括目录,版本修订记录,产品概述,功能说明,全局说明,非功能性说明。该原型模板使用简单,交互完善,直接修改文字即可。 axure源文件预览地址:...
  • 功能介绍 WPS文字:公文级的文档处理能力 支持查看和编辑doc/docx文档,无论图文、表格混排还是批注、修订模式,均游刃有余,并支持Word文档的加密和解密。查找替换、书签笔记功能则针对移动...
  • 海鸥Word转Txt格式转换器完全免费版是一款Windows操作系统下的简单实用美观免费的Word转Txt格式转换器。所有功能集成在同一界面实现,易于...方法:您只需要将所有的word文档拖入列表框中即可,一键操作,简单快捷。
  • Word文档:空白文档、信纸尺寸的文档、Office 2003文档和报告文档; PPT文档:空白演示、深色演示、浅色演示和Office 2003演示。 Picsel Smart Office Donate功能还是比较强大的,能够支持普通的Word、PPT和Excel...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,424
精华内容 2,569
关键字:

word文档手机版免费下载