【Java wrod文档导出 返回浏览器下载读取word文档】文档流转IO流
在工作当中会有很多奇奇怪怪的需求 比如把数据库数据 导出word文档,在此之前发表过一篇 导出ecxle表格的文章,经过查询资料 发现还是很容易实现的 。
我们一共可以分为两个部分
一、把数据库的数据组装成word文档 生成文档流 在这里可以用到XWPFDocument。
XWPFDocument是apache基金会提供的用户导出Word文档的工具类。
二、把生成的文档流转变成io流运用HttpServletResponse 发送给浏览器
引入maven依赖
<!-- excel工具 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency>
1、XWPFDocument基本概念
1、基本的概念
XWPFDocument:代表一个docx文档
XWPFParagraph:代表文档、表格、标题等种的段落,由多个XWPFRun组成
XWPFRun:代表具有同样风格的一段文本
XWPFTable:代表一个表格
XWPFTableRow:代表表格的一行
XWPFTableCell:代表表格的一个单元格
XWPFChar:表示.docx文件中的图表
XWPFHyperlink:表示超链接
XWPFPicture:代表图片
XWPFComment :代表批注
XWPFFooter:代表页脚
XWPFHeader:代表页眉
@Overridepublic XWPFDocument getWord() {//创建XWPFDocument 对象XWPFDocument document = new XWPFDocument();//创建XWPFParagraph 段落对象XWPFParagraph title = document.createParagraph();//左对齐title.setAlignment(ParagraphAlignment.LEFT);XWPFRun titleRun = title.createRun();titleRun.setText("标题");//加粗titleRun.setBold(true);titleRun.setFontSize(15);titleRun.addBreak()//内容段落XWPFParagraph desc = document.createParagraph();desc.setAlignment(ParagraphAlignment.LEFT);XWPFRun descRun = desc.createRun();descRun.setText("内容一段");descRun.setBold(true);descRun.setFontSize(13);descRun.addBreak();XWPFRun articleContent = desc.createRun();articleContent.setText("内容第二段");articleContent.setBold(false);articleContent.setFontSize(8);articleContent.addBreak();return document;}
二、调用getWord方法 获得文档流 转换io流输出
@GetMapping("/getWord")public AjaxResult getWordHttp(HttpServletResponse response) {XWPFDocument document = this.getWode();OutputStream out = null;try {response.setStatus(200);//配置导出的word名称&后缀response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode("文档名称"+".docx", "UTF-8"));out = response.getOutputStream();document.write(out);} catch (Exception e) {log.error(e);return AjaxResult.error("下载失败");} finally {try {if (document != null) {document.close();}if (out != null) {out.close();}}catch (IOException e) {e.printStackTrace();}}return AjaxResult.error("下载成功");}
二、读取word文档 纯文本 如果需要 读取复杂布局图片 建议转成富文本 在读取
/*** 获取正文文件内容,docx方法** @param file* @return*/private Map<String, String> getContentDocx(String path) {Map<String, String> map = new HashMap();StringBuffer content = new StringBuffer("");// 0表示获取正常,1表示获取异常String result = "0";InputStream is = null;Logger logger = null;try {//根据需求入参也可以改为文件路径,对应的输入流部分改为new File(路径)即可is = new FileInputStream(new File(path));// 2007版本的word// 2007版本,仅支持docx文件处理XWPFDocument xwpf = new XWPFDocument(is);List<XWPFParagraph> paragraphs = xwpf.getParagraphs();if (paragraphs != null && paragraphs.size() > 0) {for (XWPFParagraph paragraph : paragraphs) {content.append(paragraph.getParagraphText());}}} catch (Exception e) {log.error("docx解析正文异常:" + e);// 出现异常result = "1";} finally {if (is != null) {try {is.close();} catch (IOException e) {log.error("" + e);}}map.put("result", result);map.put("content", String.valueOf(content));}return map;}
【Java wrod文档导出 返回浏览器下载读取word文档】文档流转IO流相关推荐
- ASP.NET MVC5 使用NPOI导出ExceL 返回浏览器下载
一,什么是NPOI 该项目是位于http://poi.apache.org/的POI Java项目的.NET版本.POI是一个开源项目,可以帮助您读取/写入xls,doc,ppt文件.它有着广泛的应用 ...
- ie浏览器下载门户网站的excel文档出现乱码现象的解决办法
1.有时候我们部署的网站的相关下载链接通过ie浏览器下载xls文档打开会出现乱码现象. 2.解决方法: 2.1 在部署包web.xml文档中加入如下配置: <!-- ie xls文件直接打开乱码 ...
- 利用freemarker模板导出单个word及多word压缩导出到浏览器下载
1.后端代码 @RequestMapping(value = { "wordMultipleExport" }, method = {RequestMethod.POST})pub ...
- Excel导出(浏览器下载器下载导出Excel)
1.需要添加的依赖 <!-- Easyexcel --><dependency><groupId>com.alibaba</groupId><ar ...
- java读取word文档的复杂表格_poi读取word表格 java POI 如何读取word的表格中的表格...
poi 操作word 2007 (如何删除word中的某一个表格)小编忘了哪年哪月的哪日小编在哪面墙上刻下张脸张微笑着忧伤着凝望小编的脸. public static void changeTable ...
- Java获取文档页数_java准确读取word文件页数
由于本人在做一个网上打印网站,遇到了一个需求是"准确读取word文件页数,从而实现计费功能",通过很长时间的学习.查资料后,终于解决了这个问题,因此把方法写出来,方便有同样需求的人 ...
- java实现excel导入导出,对象图片读取,上传七牛云
java实现excel导入导出以及解决方案 因为公司业务需求,要完成针对表格的导入导出,excel这里使用MultipartFile类接收 ,下面是部分关键代码,希望有所帮助 //获取excel文件的 ...
- 计算机无法建立word文档,(电脑中右键不能新建word和excel文档怎么办)为何电脑无法新建excle...
电脑中右键不能新建word和excel文档怎么办 开始,找到运行命,输入regedit,打开注册表. 在左侧找到hkey_classes_root目录,并展开. 首先,我们利用ctrl f 快捷键,查 ...
- java基础5:工厂模式、单例模式、File文件类、递归、IO流、Properties配置文件、网络编程、利用IO流模拟注册登录功能、关于反射、JDK动态代理
1.工厂模式 23种java设计模式之一 1)提供抽象类(基类) 2)提供一些子类,完成方法重写 3)提供一个接口:完成具体子类的实例化对象的创建,不能直接new子类,构造函数私有化. 优点:具体的子 ...
最新文章
- wordpressPHP实现ajax评论,AJAX_wordpress 为主题添加AJAX提交评论功能的php代码,首先需要在主题的function.php文 - phpStudy...
- STM32:RTC闹钟唤醒
- bzoj3238 [Ahoi2013]差异
- 倍受好评的美国主机JustHost使用全攻略教程
- Opencv--获取Mat图像数据的方式
- 给PhotoShop安装Portraiture插件
- 安装deepin后会删除win10吗_不管是先装Win10还是先装Deepin,启动问题轻松搞定
- 8. CSS/JS 文件管理
- 在函数‘_start’中:对‘main’未定义的引用
- 自我保护第一课加密与防破解
- python平均分及格率优秀率_跪求:请问怎样统计均分、优秀率、及格率、低分率的问题...
- Cypress使用教程
- 拳皇世界服务器维护,拳皇世界3月1日更新维护公告 多组服务器开启数据互通[图]...
- beamer插入图片_用Latex制作幻灯片(beamer)
- 微信公众号无限定时群发系统
- Blender:如何翻转UV
- 平安夜的真实来历(平安夜的由来)
- 京东校招java笔试题_试卷: 京东2019校招笔试Java开发工程师笔试题(1-)
- 弹性计算双周刊 第20期
- 如何免费给PDF文件添加标注?