1. 程式人生 > 實用技巧 >java 通過html程式碼轉換word文件

java 通過html程式碼轉換word文件

java程式碼

public void htmlToWord2() throws Exception {
         InputStream bodyIs = new FileInputStream("f:\\1.html");
         InputStream cssIs = new FileInputStream("f:\\1.css");
         String body = this.getContent(bodyIs);
         String css = this.getContent(cssIs);
         //拼一個標準的HTML格式文件
         String content = "<html><head><style>" + css + "</style></head><body>" + body + "</body></html>";
         InputStream is 
= new ByteArrayInputStream(content.getBytes("GBK")); OutputStream os = new FileOutputStream("f:\\1.doc"); this.inputStreamToWord(is, os); } /** * 把is寫入到對應的word輸出流os中 * 不考慮異常的捕獲,直接丟擲 * @param is * @param os * @throws IOException
*/ private void inputStreamToWord(InputStream is, OutputStream os) throws IOException { POIFSFileSystem fs = new POIFSFileSystem(); //對應於org.apache.poi.hdf.extractor.WordDocument fs.createDocument(is, "WordDocument"); fs.writeFilesystem(os); os.close(); is.close(); }
/** * 把輸入流裡面的內容以UTF-8編碼當文字取出。 * 不考慮異常,直接丟擲 * @param ises * @return * @throws IOException */ private String getContent(InputStream... ises) throws IOException { if (ises != null) { StringBuilder result = new StringBuilder(); BufferedReader br; String line; for (InputStream is : ises) { br = new BufferedReader(new InputStreamReader(is, "UTF-8")); while ((line=br.readLine()) != null) { result.append(line); } } return result.toString(); } return null; }

css 程式碼如下

table {
       border: 1px solid blue;
       width: 800px;
       height: 500px;
       text-align: center;
}
td {
       width: 200px;
       border: 1px solid blue;
}

html對應的內容如下

<table cellpadding="5" style="border-collapse: collapse;">
       <tr>
              <td>中文</td>
              <td>中文</td>
              <td>中文</td>
              <td>中文</td>
       </tr>
       <tr>
              <td>中文</td>
              <td>中文</td>
              <td>中文</td>
              <td>中文</td>
       </tr>
</table>

注:非原創