日期:2014-05-17  浏览次数:20671 次

Java引用POI实现Word转Html方法
1.下载POI工具并引用
2.读取整个doc文档,获得该文档的所有字符串。
3.从该字符串中得到标题,把该标题构成一个HTML格式的字符串,如<html><head><title>测试文档</title></head><body>。
4.从该文档中判断是否有表格,如有,把每个表格的开始偏移量,结束偏移量记录下来,同时根据每个表格的行,列读取表格的内容,并构造出表格的HTML字符串。
5.从该字符串的第一个字符开始逐个字符循环,得到字符的字体,字号大小,直到下一个字符的字体,字号不一样时,把这些字符内容构造成一个HTML格式的字符串。
6.如果碰到字符为回车符,制表符,把回车符,制表符构造成HTML格式的字符串。
7.如果碰到字符为图片,读取图片,把图片放在指定路径,再把这一路径的信息构造成HTML字符串,如<img src='c://test//1.jpg'/>。
8.如读取字符串的位置等于表格的开始偏移量时,插入前面一构造出的表格HTML字符串,同时跳过表格的结束偏移量,继续往下循环读取字符。
9.由于以上读取是按字符串逐个读取,并且根据字符的变化同时构造出HTML字符串,所以当字符串读取完毕后,即构造出一个完整的HTML字符串。
10.举例
Word文件
HTML文件
11.源代码
WordExcelToHtml.java

01.package com; 
02.import java.io.BufferedWriter; 
03.import java.io.File; 
04.import java.io.FileInputStream; 
05.import java.io.FileNotFoundException; 
06.import java.io.FileOutputStream; 
07.import java.io.IOException; 
08.import java.io.OutputStream; 
09.import java.io.OutputStreamWriter; 
10. 
11.import org.apache.poi.hwpf.HWPFDocument; 
12.import org.apache.poi.hwpf.model.PicturesTable; 
13.import org.apache.poi.hwpf.usermodel.CharacterRun; 
14.import org.apache.poi.hwpf.usermodel.Picture; 
15.import org.apache.poi.hwpf.usermodel.Range; 
16.import org.apache.poi.hwpf.extractor.WordExtractor; 
17.import org.apache.poi.hwpf.usermodel.Paragraph;    
18.import org.apache.poi.hwpf.usermodel.Table;    
19.import org.apache.poi.hwpf.usermodel.TableCell;    
20.import org.apache.poi.hwpf.usermodel.TableIterator;    
21.import org.apache.poi.hwpf.usermodel.TableRow;    
22. 
23. 
24.public class WordExcelToHtml { 
25. 
26.    /**
27.     * 回车符ASCII码
28.     */ 
29.    private static final short ENTER_ASCII = 13; 
30. 
31.    /**
32.     * 空格符ASCII码
33.     */ 
34.    private static final short SPACE_ASCII = 32; 
35. 
36.    /**
37.     * 水平制表符ASCII码
38.     */ 
39.    private static final short TABULATION_ASCII = 9; 
40. 
41.    public static String htmlText = ""; 
42.    public static String htmlTextTbl = ""; 
43.    public static int counter=0; 
44.    public static int beginPosi=0; 
45.    public static int endPosi=0; 
46.    public static int beginArray[]; 
47.    public static int endArray[]; 
48.    public static String htmlTextArray[]; 
49.    public static boolean tblExist=false; 
50.     
51.    public static final String inputFile="c://bb.doc"; 
52.    public static void main(String argv[]) 
53.    {        
54.        try { 
55.            getWordAndStyle(inputFile); 
56.        } catch (Exception e) { 
57.            // TODO Auto-generated catch block  
58.            e.printSt