最近产品提了一个新需求,让移动端生成word文件,不是那种表格型的,正常排版的数据,翻来翻去都没有找到合适的,最后发现了一个成熟的三方spire 跟大家分享一下,使用了免费版,有瑕疵,特此记录一下。 后端同事推荐还有一种poi也可以实现,这里只做简单的分享,大家可以自行去查阅poi相关的东西,都不难。

效果:

首先:导入jar包,链接:https://pan.baidu.com/s/1tssXG67Etp1HfUTLNCE1Jg 
提取码:1024

然后直接上代码:

String namePaths = "";//生成的word文件路径
btn_output_word.setOnClickListener(new View.OnClickListener() {//导出word@Overridepublic void onClick(View v) {//因为导出word中有图片,时间会稍微较长,为了体验加一个加载的loading,你们也可以忽略dialog1 = new LoadProgressDialog(MainActivity.this, "正在导出word...");dialog1.show();//需要文件读写权限if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)== PackageManager.PERMISSION_GRANTED) {//数据源final List<ProblemTitleBean> list = new ArrayList<>();list.clear();list.addAll(beanList0);list.addAll(beanList1);list.addAll(beanList2);list.addAll(beanList3);if (list.size() < 1) {return;}//开启一个线程去做生成操作new Thread(new Runnable() {@Overridepublic void run() {// district_name:是我的word文件名开头namePaths = outWordPaths(district_name, list);}}).start();}}
});

//关键方法

 private String outWordPaths(String distline_name, List<ProblemTitleBean> list) {//创建Word文档Document document = new Document();//添加一个sectionSection section = document.addSection();//添加三个段落至sectionParagraph para1 = section.addParagraph();para1.appendText(distline_name + "台区现场排查异常问题报告");//标题for (int i = 0; i < list.size(); i++) {Paragraph para2 = section.addParagraph();para2.appendText((i + 1) + " 设备名称:" +         list.get(i).getProblem_name());Paragraph para3 = section.addParagraph();para3.appendText("问题描述:" + list.get(i).getProblem_text());//添加第二个段落Paragraph paragraph4 = section.addParagraph();//添加图片到段落(我这个是本地图片路径)if (list.get(i).getProblem_pic_path()!=null && list.get(i).getProblem_pic_path()!="") {
//添加图片的方法DocPicture picture = paragraph4.appendPicture(list.get(i).getProblem_pic_path());//设置图片宽度picture.setWidth(200f);//设置图片高度picture.setHeight(150f);}//设置其余两个段落的格式,因为没用到给注释了
//            ParagraphStyle style2 = new ParagraphStyle(document);
//            style2.setName("paraStyle");
//            style2.getCharacterFormat().setFontName("宋体");
//            style2.getCharacterFormat().setFontSize(11f);
//            document.getStyles().add(style2);
//            para2.applyStyle("paraStyle");
//            para3.applyStyle("paraStyle");//设置第二段和第三段的段首缩进para2.getFormat().setFirstLineIndent(25f);para3.getFormat().setFirstLineIndent(25f);paragraph4.getFormat().setFirstLineIndent(25f);//设置第一段和第二段的段后间距para2.getFormat().setAfterSpacing(10f);para3.getFormat().setAfterSpacing(10f);paragraph4.getFormat().setAfterSpacing(10f);}para1.getFormat().setAfterSpacing(15f);//将第一段作为标题,设置标题格式ParagraphStyle style1 = new ParagraphStyle(document);style1.setName("titleStyle");style1.getCharacterFormat().setBold(true);style1.getCharacterFormat().setTextColor(Color.BLUE);style1.getCharacterFormat().setFontName("宋体");style1.getCharacterFormat().setFontSize(12f);document.getStyles().add(style1);para1.applyStyle("titleStyle");//设置第一个段落的对齐方式para1.getFormat().setHorizontalAlignment(HorizontalAlignment.Center);//保存文档String path = Environment.getExternalStorageDirectory().getPath();//这里换成你们自己路径File file = new File(path + "/dfsoft/hippo/word");if (!file.exists()) {file.mkdirs();}String fileName = "";fileName = distline_name + "台区现场排查异常问题报告"+ ".docx";//文档格式docxString fileWordPath = file.getPath() + "/" + fileName;document.saveToFile(fileWordPath, FileFormat.Docx);mHandler.sendEmptyMessage(1);//这里是我开的线程,用来关闭dialog,不用的可以忽略return fileWordPath;}

最后 你就可以在创建的文件夹看到生成的文件;

我们需求是直接分享出去,

if (namePaths != null && !"".equals(namePaths)) {Intent email = tool.email(namePaths);startActivity(Intent.createChooser(email, "请选择邮件发送软件!"));
} else {Toast.makeText(MainActivity.this, "发送失败!", Toast.LENGTH_SHORT).show();
}

仅供大家参考,ps:因为是免费版所以生成的word首行会有个他们的水印,参考了两种方案,第一种就是自己手动删除(当然这太lowL);第二种我看网上说可以使用别的word操作框架去操作删除参考poi,不过这样会导致项目很大,感觉暂时没有好的处理方式,希望大家有好方法的可以知会我,一起分享进步~

完结,撒花

安卓生成word文档(使用了Spire.Doc.Android)相关推荐

  1. Aspose.Words简单生成word文档

    Aspose.Words简单生成word文档 Aspose.Words.Document doc = new Aspose.Words.Document(); Aspose.Words.Documen ...

  2. Java 生成Word文档 — 简单示例

    前言 这篇文章将介绍如何使用免费Java Word组件Free Spire.Doc for Java在Java应用程序中生成Word文档,插入文本,并设置段落的字体格式.对齐方式以及段后间距等. Fr ...

  3. C# 读取txt文件生成Word文档

    本文将以C#程序代码为例介绍如何来读取txt文件中的内容,生成Word文档.在编辑代码前,可参考如下代码环境进行配置: Visual Studio 2017 .Net Framework 4.6.1 ...

  4. 关于用java编写生成word文档,动态添加数据到word文档的一些心得

    关于用java编写生成word文档,动态添加数据到word文档的一些心得,经过翻阅了无数的有用的和无用的资料以后,总算找到了一种靠谱的方法 1.概述 经过反反复复的查阅资料,总算找到了一个靠谱的生成w ...

  5. php导出doc文件_PHP生成Word文档的方法

    PHP生成Word文档的方法 首先,请确保在你的Windows系统中已经安装并配置好了一个典型的WAMP环境.由于Interop纯粹是一个Windows的特性,我们将在Windows平台下搭建Apac ...

  6. php 内容自动生成word文档,php生成word文档的例子

    /** * 生成word文档 * * @param string $html 内容部分 * @param string $file 文件名称 * @param string $code 当前文件编码, ...

  7. 将HTML导出生成word文档

    前言: 项目开发中遇到了需要将HTML页面的内容导出为一个word文档,所以有了这边随笔. 当然,项目开发又时间有点紧迫,第一时间想到的是用插件,所以百度了下.下面就介绍两个导出word文档的方法. ...

  8. 用Aspose.Words for .NET动态生成word文档中的图片或水印

    1.概述 在项目中生成word文档,这个功能很普遍的,一般生成都是纯文字或是列表的比较多,便于客户打印,而要把图片也生成到word文档中的需求有些客户也是需要的,例如产品图片.这次我们介绍的是如何利用 ...

  9. python读取word指定内容_python解析html提取数据,并生成word文档实例解析

    简介 今天试着用ptyhon做了一个抓取网页内容,并生成word文档的功能,功能很简单,做一下记录以备以后用到. 生成word用到了第三方组件python-docx,所以先进行第三方组件的安装.由于w ...

最新文章

  1. redis-5.0.4集群部署
  2. Linux快速复制T级数据或删除大量小文件
  3. 巨头都在争抢无人驾驶 这家智慧停车公司却先上了路 科技事务 百家号 08-14 15:55 今年来,互联网巨头在智慧交通领域动作频频,4月初,百度提出雄心勃勃的“阿波罗计划”,宣布开放自动驾驶平台以
  4. java 字符串解析
  5. java读取excel中的数据存到数据库
  6. 第七十三期:2019大裁员!年关将至,裁员比例竟达90%?
  7. JEECG 3.7.8 补丁代码提交通知
  8. (文档挂起)打印机为什么打印失败?
  9. pythondict函数_Python的dict()函数
  10. oracle插入新字段脚本
  11. python tensorflow 智能家居_用 TensorFlow 让你的机器人唱首原创给你听
  12. 电脑蓝屏代码大全及解决办法合集
  13. 计算机管理员账户默认密码,win10默认管理员密码,win10管理员初始密码
  14. ②、jQuery,Hold on!
  15. SAP ERP统驭科目
  16. 混叠(aliasing)和抗混叠滤波器
  17. 「软件合集」免费分享15款小众实用软件,没多少人知道,打包送你
  18. win10如何手动强制关联默认文件打开方式应用
  19. vue使用高德api 定位获取位置信息 positionLocation.js及 USERKEY_PLAT_NOMATCH报错
  20. 陈芳,高考之后我要学计算机专业,等我干 IT 发财了,我就回来娶你!

热门文章

  1. 两台电脑之间Sql Server数据库的链接配置
  2. 计算机体系结构期末复习
  3. Springboot 源码分析 —— @Endpoint 注解生效原理解析
  4. 视频、音乐播放器大家都听说过,那么图片播放器呢
  5. DNS 域名层次结构
  6. Excel中删除重复的数据
  7. 项目管理理论介绍(上)
  8. swift项目嵌入flutter的module混合开发(framework模式:适合多人协作开发,一个负责混合开发)
  9. “一个好的药鼎对于炼药师来说,就如同武士手中的宝剑一般重要。”
  10. android8.1APP更新时出现安装包解析异常的提示