Java 后台创建word 文档
---恢复内容开始---
Java 后台创建 word 文档
自己总结 网上查阅的文档
分享POI 教程地址:http://www.tuicool.com/articles/emqaEf6
方式一、(正常创建 适合短文本 无格式要求Word文档)
XWPFDocument doc = new XWPFDocument(); //创建word文件
XWPFParagraph p1 = doc.createParagraph(); //创建段落
XWPFRun r1 = p1.createRun(); //创建段落文本
r1.setText("hello world"); //设置文本
FileOutputStream out = new FileOutputStream("D:\\simple.docx"); //创建输出流
doc.write(out); //输出
out.close(); //关闭输出流
方式二、(适合有格式要求的Word文档。)
Demo code is my Working code 这段code 是文件下载功能 对选中的项 进行数据读取 并且生成word文档 并且压缩成zip格式 下载
//1、创建临时文件夹是否存在
File zipFolder = new File("F:\\压缩word");
if(!zipFolder.exists()){
zipFolder.mkdirs();
}
File wordFolder = new File("F:\\测试word");
if(!wordFolder.exists()){
wordFolder.mkdirs();
} //2、声明变量
String splitSymbol = "\\";
byte[] byt = new byte[1024];
int count = 0;
//编写压缩后文件 流
FileOutputStream zipOut = new FileOutputStream(zipFolder+splitSymbol+"myfigs.zip"); //获得 zip的file对象
File fileZip = new File(zipFolder+splitSymbol+"myfigs.zip"); //3、判断用户选择是1个还是多个
//获得类型
String[] libList = request.getParameter("libSource").split(",");
//迭代ID
String[] idArray = request.getParameter("hidFavId").split(",");
for(int i = 0;i<idArray.length;i++){
//4、根据收藏类型 区分 访问数据库 获得word正文内容数据
String wordText = getTextData(request,idArray[i],libList[i]);
//3、新创建个word
StringBuffer buffer = new StringBuffer(); //因为必须符合HTML格式 所以 必须添加html头
buffer.append("<html><head><body>");
buffer.append(wordText);
buffer.append("</body></head></html>");
//生成个文件名
UUID uuid = UUID.randomUUID();
File outFile = new File(wordFolder+splitSymbol+uuid.toString()+".doc");
//将数据转成字节数组
byte[] contentBytes = buffer.toString().getBytes();
ByteArrayInputStream byteStream = new ByteArrayInputStream(contentBytes);
//创建word文档
POIFSFileSystem poifSystem = new POIFSFileSystem(); //暂时不知道什么意思
DirectoryNode root = poifSystem.getRoot(); //同上
root.createDocument("WordDocument",byteStream); //这个WordDocument 不可以进行修改 否则乱码
FileOutputStream outStream = new FileOutputStream(outFile);
poifSystem.writeFilesystem(outStream); //将流 输出到word文档上
byteStream.close();
outStream.close(); }
//5、利用压缩流 对 进行压缩
ZipOutputStream zipOutStream = new ZipOutputStream(new BufferedOutputStream(zipOut)); //创建个压缩流 对应文件输出流 文件名及路径
// 获得要压缩的文件夹
File file = new File(wordFolder+splitSymbol);
String[] fileList = file.list();
for(String fileName : fileList){ //迭代要压缩文件夹 子内容
FileInputStream inputStream = new FileInputStream(file+splitSymbol+fileName);
//设置压缩文件打开后 显示每一项的名字
ZipEntry zipentry = new ZipEntry(fileName);
zipOutStream.putNextEntry(zipentry); //将压缩流和自项关联上
while((count=inputStream.read(byt, 0, 1024))!=-1){
zipOutStream.write(byt, 0, count);
}
inputStream.close();
}
zipOutStream.close(); //7、文件下载
response.reset();
String fileName = new String("aggregate.zip".getBytes("UTF-8"),"iso-8859-1");
response.setHeader("Content-Disposition", "attachment; filename="+fileName); //文件名
response.setContentType("application/octet-stream; charset=utf-8");
response.setHeader("Content-Length", Long.valueOf(fileZip.length()).toString()); //页面下载框文件后面()大小
response.setCharacterEncoding("UTF-8");
ServletOutputStream outputStream = response.getOutputStream();
byte[] byteArray = FileUtils.readFileToByteArray(fileZip); //获得要下载的文件字节数组
//8、下载之前 将临时目录删除
File[] zipFiles = zipFolder.listFiles();
File[] wordFiles = wordFolder.listFiles();
for(File zip : zipFiles){
zip.delete();
}
for(File word : wordFiles){
word.delete();
}
zipFolder.delete();
wordFolder.delete();
outputStream.write(byteArray); //利用输出流 输出
outputStream.flush();
---恢复内容结束---
Java 后台创建word 文档的更多相关文章
- [java,2017-05-04] 创建word文档
package test; import java.text.SimpleDateFormat; import java.util.Date; import com.aspose.words.Data ...
- C#实现通过模板自动创建Word文档的方法
原文地址:http://www.jb51.net/article/55332.htm 本文实例讲述了C#实现通过模板自动创建Word文档的方法,是非常实用的技巧.分享给大家供大家参考.具体实现方法 ...
- 在C#中创建word文档
在下面文档中 首先引用word组件:Microsoft.Office.Interop.Word 在头文件中写上 using Word = Microsoft.Office.Interop.Word; ...
- OpenXml SDK 2.0 创建Word文档 添加页、段落、页眉和页脚
using (WordprocessingDocument objWordDocument = WordprocessingDocument.Create(@"C:\********.doc ...
- Python批量创建word文档(2)- 加图片和表格
Python创建word文档,任务要求:小杨在一家公司上班,每天都需要给不同的客户发送word文档,以告知客户每日黄金价格.要求在文档开始处给出banner条,价格日期等用表格表示.最后贴上自己的联系 ...
- Python批量创建word文档(1)- 纯文字
Python创建word文档,任务要求:小杨在一家公司上班,每天都需要给不同的客户发送word文档,以告知客户每日黄金价格.最后贴上自己的联系方式.代码如下: 1 ''' 2 #python根据需求新 ...
- 使用Freemarker创建word文档
最近做一个项目,本来是直接在网页上查看文本信息,然后给客户直接打印的,但是发现也许是浏览器还是打印机的原因,总之,有个客户打印出来的格式始终与其他的不同,没办法,最后想到了直接将数据库中的信息生成一个 ...
- [转载]Java动态生成word文档(图文并茂)
很多情况下,软件开发者需要从数据库读取数据,然后将数据动态填充到手工预先准备好的Word模板文档里,这对于大批量生成拥有相同格式排版的正式文件非常有用,这个功能应用PageOffice的基本动态填充功 ...
- [原创]Java动态生成word文档(图文并茂)
很多情况下,软件开发者需要从数据库读取数据,然后将数据动态填充到手工预先准备好的Word模板文档里,这对于大批量生成拥有相同格式排版的正式文件非常有用,这个功能应用PageOffice的基本动态填充功 ...
随机推荐
- 初学 Java Script (算数运算及逻辑术语)
在JS中常用的算数运算符与其他编程类语言类似,逻辑术语也近乎相同. 一.常用算数运算符 1.基本算数运算符 赋值运算符:= : 加号:+ : 减号: - : 乘号: * : 除号: / : 求余: % ...
- 2.Ubuntu16.04安装QT5.8.0
VSCode编辑器开发CPP:http://www.cnblogs.com/dotnetcrazy/p/6661921.html 下载QT run文件(安装包),一般都是这两个下载的比较多,我这边使用 ...
- c的旅程---字符
输出菱形实验: /***************** 2017年四月十六. 第一个例子,输出菱形.就是找关系. 这是当n= 3时, * *** * ******************/ #inclu ...
- 【外文翻译】 为什么我要写 getters 和setters
原文作者: Shamik Mitra 原文链接:https://dzone.com/articles/why-should-i-write-getters-and-setters 当我开始我的java ...
- 兼容IE8的input输入框的正确使用姿势
input是一个很常见的标签,大家使用的也很常见,但是我在具体的工作中发现要想完美的使用这个标签还是任重而道远,下面是我碰到的几个问题. 1.我们在使用这个标签的时候会习惯的加上placeholder ...
- css 画出三角形
技术分享不一定行文累赘 这里说说最简洁的 css 画出三角形 display: inline-block; border: 10px dashed transparent; border-left: ...
- 使用Java语言开发微信公众平台(六)
在上一节课程中,我们来学习了微信公众平台最基础的一个接口--access_token,并且能够从微信公众平台中取到access_token. 那么,在本节课程中,我们要以上节课获取到的access_t ...
- 【正常向】CODEVS上分黄金
白银上分黄金失败=.= 在之前有很认真的写了一波排序,所以排序并不是很怂,还是那个理,现阶段学习的都是比较简单的排序,都是所谓的冒泡排序啊,桶排序这类,至于插排和选择排序,再往后又是什么快拍就很尬了. ...
- [ext4]13 空间管理 - Prealloc分配机制
作者:Younger Liu, 本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可. 在ext4系统中,对于小文件和大文件的空间申请请求,都有不同的分配策略 ...
- MYSQL设置远程账户登陆总结
为了给MYSQL用户设置远程连接权限,经历的种种错误总结 ERROR 2003 (HY00 原因是MySQL考虑到安全因素,默认配置只让从本地登录 打开 /etc/mysql/my.cnf 文件,找到 ...