• Java 后台创建word 文档


    ---恢复内容开始---

                              Java 后台创建 word 文档

      自己总结  网上查阅的文档

      分享POI 教程地址:http://www.tuicool.com/articles/emqaEf6

      方式一、(正常创建  适合短文本 无格式要求Word文档)

    1     XWPFDocument doc = new XWPFDocument(); //创建word文件
    2     XWPFParagraph p1 = doc.createParagraph(); //创建段落
    3     XWPFRun r1 = p1.createRun(); //创建段落文本
    4     r1.setText("hello world"); //设置文本
    5     FileOutputStream out = new FileOutputStream("D:\simple.docx"); //创建输出流 
    6     doc.write(out);  //输出
    7     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();

    ---恢复内容结束---

  • 相关阅读:
    121. Best Time to Buy and Sell Stock
    70. Climbing Stairs
    647. Palindromic Substrings
    609. Find Duplicate File in System
    583. Delete Operation for Two Strings
    556 Next Greater Element III
    553. Optimal Division
    539. Minimum Time Difference
    537. Complex Number Multiplication
    227. Basic Calculator II
  • 原文地址:https://www.cnblogs.com/yi1036943655/p/5292850.html
Copyright © 2020-2023  润新知