java html2word/doc
昨天公司安排了一个任务,目的是将html转换成word,
直接用word和flt时间不够,几天以后就要上线。。。
我看了几乎全部csdn以及能查到的相关资料。
使用poi,使用flt,但是时间原因没时间做模板用flt了,
poi的相关文档又太少,一头雾水时
今天我测试发现了一个最最最简单完成html2word的方法
记录并且公开,希望能帮到大家和我
最最最简单的,原理篇
偶然测试发现html直接改后缀就可以变成doc,而且可读,但是docx不可以。
直接使用发现图片不显示,测试偶然发现带有http头的img链接是可以显示在doc上的,<img src="http://img13.360buyimg.com/n7/jfs/t1/102900/26/2632/158701/5dd601a5E9ed34588/596e136d4a144cae.jpg"/>
就像这种图片
向京东道歉使用了他的图片做测试哈哈
因为我现在的功能比较简单,于是也没有太多的测试,上一个demo代码
代码篇
import java.io.ByteArrayInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Text {
public static void main(String[] args) throws IOException {
/**
* 建立一个字符串,里面存放了一个渲染好数据的网页的所有代码
*/
String html=new String("<!DOCTYPE html>\n" +
"<html lang=\"en\">\n" +
"<head>\n" +
" <meta charset=\"UTF-8\">\n" +
" <title>学生信息表</title>\n" +
"</head>\n" +
"<body>\n" +
"\n" +
"<table style=\"width: 60%;text-align: center;\" cellspacing=\"2\" cellpadding=\"3\" border=\"1px\">\n" +
" <tr>\n" +
" <td rowspan=\"5\" style=\"background-color: darkorange\">学生</td>\n" +
" <td colspan=\"6\" style=\"background-color: aqua;color: red\">学生信息表</td>\n" +
" </tr>\n" +
" <tr style=\"background-color: salmon\">\n" +
" <td>序号</td>\n" +
" <td>姓名</td>\n" +
" <td>性别</td>\n" +
" <td>年龄</td>\n" +
" <td>电话</td>\n" +
" <td>住址</td>\n" +
"\t\t<td>照片</td>\n" +
" </tr>\n" +
" <tr style=\"background-color: darkgray\">\n" +
" <td>1</td>\n" +
" <td>张三</td>\n" +
" <td>男</td>\n" +
" <td>23</td>\n" +
" <td>110</td>\n" +
" <td>雁塔</td>\n" +
"\t\t<td><img src=\"http://img13.360buyimg.com/n7/jfs/t1/102900/26/2632/158701/5dd601a5E9ed34588/596e136d4a144cae.jpg\"/></td>\n" +
" </tr>\n" +
" <tr style=\"background-color: darkgray\">\n" +
" <td>2</td>\n" +
" <td>张三</td>\n" +
" <td>男</td>\n" +
" <td>23</td>\n" +
" <td>110</td>\n" +
" <td>雁塔</td>\n" +
"\t\t<td><img src=\"img13.360buyimg.com/n7/jfs/t1/102900/26/2632/158701/5dd601a5E9ed34588/596e136d4a144cae.jpg\"/></td>\n" +
" </tr>\n" +
" <tr style=\"background-color: darkgray\">\n" +
" <td>3</td>\n" +
" <td>张三</td>\n" +
" <td>男</td>\n" +
" <td>23</td>\n" +
" <td>110</td>\n" +
" <td>雁塔</td>\n" +
"\t\t<td><img src=\"//img13.360buyimg.com/n7/jfs/t1/102900/26/2632/158701/5dd601a5E9ed34588/596e136d4a144cae.jpg\"/></td>\n" +
" </tr>\n" +
"</table>\n" +
"</body>\n" +
"</html>" );
/**
* 获得字节流并且直接输出就好,注意上面的src一定是带有http开头的,中间的图片会直接显示错误,最下面的写了更是会出现导出的doc打不开。
*/
byte[] b=html.getBytes("utf-8");
ByteArrayInputStream bais=new ByteArrayInputStream(b);
FileOutputStream file = new FileOutputStream("D:/a.doc");
file.write(b);
bais.close();
file.close();
}
}