---恢復內容開始---
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();
---恢復內容結束---
