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