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的基本动态填充功 ...
随机推荐
- Linux 安装SVN服务器 (转)
一. SVN 简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库 (repository) 中 ...
- Log4j配置文件内容详解
.Log4j的优点 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送地:我们也可以控制每一条日志的输出格式:通过定义每一条日志信息的级别,我们能够更加细致地控 ...
- 搭建MySQL高可用负载均衡集群
1.简介 使用MySQL时随着时间的增长,用户量以及数据量的逐渐增加,访问量更是剧增,最终将会使MySQL达到某个瓶颈,那么MySQL的性能将会大大降低.这一结果也不利于软件的推广. 那么如何跨过这个 ...
- HTML解析器BeautifulSoup
BeautifulSoup是Python的一个库,可解析用urllib2抓取下来的HTML 1.Beautiful Soup 安装 可以利用 pip 来安装,在Python程序中导入 pip inst ...
- 【zzulioj 2135】 这里是天堂!
先考虑当前情况可行与否: 如果当a>n或者b>m时是绝对不行的,概率为0: 当a+b<m+n时,k一定等于a+b,否则概率为0: 当a+b==m+n时,k>=a+n,否则概率为 ...
- C++小技巧之CONTAINING_RECORD
CONTAINING_RECORD Containing record是一个在C++编程中用处很大的一种技巧,它的功能为已知结构体或类的某一成员.对象中该成员的地址以及这一结构体名或类名,从而得到该对 ...
- html 压缩工具 html-minifier
https://github.com/kangax/html-minifier#options-quick-reference 1.参数列表 option Description Default re ...
- 接触响应式-css3-media判断屏幕分辨率
// IE6.7.8不支持css3 使用响应式一般用bootstrap框架(IE8使用时须引用Respond.js)而不用原生JS 外联式: <link type="text/c ...
- Ubuntu中文本地化后字体改变
ubuntu中文本地化后会安装2个字体 fonts-arphic-ukai fonts-arphic-uming 找到这两个字体删除之.. sudo apt- get remove fonts-arp ...
- 实时监听input标签输入 实时监听文本框输入 避免中文输入法无法触发onkeyup事件的问题
前言: 对于实时监听输入,这种需求大多数都是用于一个联想字提醒,智能提醒.大家都知道onkeydown,onkeypress,onkeyup的在监听中文输入法或者右键粘贴的时候都存在一些弊端,不是那么 ...