最近产品提了一个新需求,让移动端生成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. SQLServer On Linux Package List on CentOS
  2. 消息 css 代码,CSS3 通知类消息动画
  3. maven配置默认jdk版本
  4. jsp 连接mysql空指针_java jdbc与mysql为什么连接不上并且抛出空指针异常?
  5. 关于IOS开发知识的总结
  6. Java黑皮书课后题第8章:*8.30(代数:解答线性方程)编写一个方法,解答下面的2*2线性方程组系统
  7. nyoj187 快速查找素数
  8. 无人驾驶的规划与控制(四)——反馈控制
  9. 吃掉那只青蛙_每日可交付成果–吃青蛙的艺术
  10. womic网络错误_【无线麦克风(WO Mic)】无线麦克风(WO Mic)安卓版(Android)3.2下载_太平洋下载中心...
  11. 计算机控制面板设置命令,控制面板在哪里打开?快捷键是多少(最全4种方法详解)...
  12. springmvc(表现层/Web层框架)
  13. Error: Unbalanced delimiter found in string
  14. 五寸照片尺寸像素 5寸的照片是几比几的
  15. 关于微信的几点更新与操作
  16. Ansible 自动化运维工具之inventory和常用模块介绍
  17. CentOS 7设置NTP、SSH服务
  18. 记录mumu模拟器AMD SVM(VT)开启失败的问题
  19. 方波转为正弦波的简单方案简介
  20. Today今天便利店的梦想:准独角兽的雄心与挑战

热门文章

  1. 人血清白蛋白修饰绿原酸/诺氟沙星/沙拉沙星, HSA-CA/Nor/Sarafloxacin
  2. 一分钟解答什么是CS资质认证
  3. 聊聊前端的Html布局
  4. 联想服务器接显示器一直黑屏,终于发现联想液晶显示器闪烁一下后黑屏是什么原因...
  5. HDU 2817 (数学,等差等比数列)
  6. Blender 之 Splash 代码分析
  7. 人脸识别的主要算法以及原理
  8. Kindle查找不到wifi
  9. mysql proxy集群_数据库集群中间件MySQL Proxy探讨
  10. 前端,前端技术,前端技术栈,前端工具等词汇的区别