引入的jar包版本一定要一致,不然会报乱七八糟的错误.
前四个jar包版本需要一致
1.word转HTML(包括两个版本)
public class WordToHtml {
public static void main(String[] args) {
try {
// word2007ToHtml();
// DocxToHtml("","/Users/apple/Documents/poitest/mm/6666.html");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static String wordToHtml(InputStream inputStream,String fileType) {
if(fileType=="docx"||fileType.equals("docx")) {
try {
return docxToHtml(inputStream);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else {
try {
return word2007ToHtml(inputStream);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return "";
}
public static String docxToHtml(InputStream inputStream) throws Exception {
String filepath = "/Users/apple/Documents/poitest";
String targetFileName = filepath+"/html/555.html";
String imagePathStr = filepath+"/html/image/";
OutputStreamWriter outputStreamWriter = null;
try {
XWPFDocument document = new XWPFDocument(inputStream);
XHTMLOptions options = XHTMLOptions.create();
// 存放图片的文件夹
options.setExtractor(new FileImageExtractor(new File(imagePathStr)));
// html中图片的路径
options.URIResolver(new BasicURIResolver("image"));
outputStreamWriter = new OutputStreamWriter(new FileOutputStream(new File(targetFileName)), "utf-8");
XHTMLConverter xhtmlConverter = (XHTMLConverter) XHTMLConverter.getInstance();
xhtmlConverter.convert(document, outputStreamWriter, options);
} finally {
if (outputStreamWriter != null) {
outputStreamWriter.close();
}
}
return targetFileName;
}
public static String word2007ToHtml(InputStream inputStream){
String outPutFile = "/Users/apple/Documents/poitest/mm/6666.html";
HWPFDocument wordDocument;
try {
//根据输入文件路径与名称读取文件流
// InputStream in=new FileInputStream(fileAllName);
//把文件流转化为输入wordDom对象
wordDocument = new HWPFDocument(inputStream);
//通过反射构建dom创建者工厂
DocumentBuilderFactory domBuilderFactory=DocumentBuilderFactory.newInstance();
//生成dom创建者
DocumentBuilder domBuilder= null;
try {
domBuilder = domBuilderFactory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
//生成dom对象
Document dom=domBuilder.newDocument();
//生成针对Dom对象的转化器
WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(dom);
//转化器重写内部方法
wordToHtmlConverter.setPicturesManager( new PicturesManager()
{
public String savePicture(byte[] content,
PictureType pictureType, String suggestedName,
float widthInches, float heightInches )
{
return suggestedName;
}
} );
//转化器开始转化接收到的dom对象
wordToHtmlConverter.processDocument(wordDocument);
//保存文档中的图片
List<?> pics=wordDocument.getPicturesTable().getAllPictures();
if(pics!=null){
for(int i=0;i<pics.size();i++){
Picture pic = (Picture)pics.get(i);
try {
pic.writeImageContent(new FileOutputStream("/Users/apple/Documents/poitest/mm/"+ pic.suggestFullFileName()));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
//从加载了输入文件中的转换器中提取DOM节点
Document htmlDocument = wordToHtmlConverter.getDocument();
//从提取的DOM节点中获得内容
DOMSource domSource = new DOMSource(htmlDocument);
//字节码输出流
ByteArrayOutputStream out = new ByteArrayOutputStream();
//输出流的源头
StreamResult streamResult = new StreamResult(out);
//转化工厂生成序列转化器
TransformerFactory tf = TransformerFactory.newInstance();
Transformer serializer = null;
try {
serializer = tf.newTransformer();
} catch (TransformerConfigurationException e) {
e.printStackTrace();
}
//设置序列化内容格式
serializer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
serializer.setOutputProperty(OutputKeys.INDENT, "yes");
serializer.setOutputProperty(OutputKeys.METHOD, "html");
try {
serializer.transform(domSource, streamResult);
} catch (TransformerException e) {
e.printStackTrace();
}
//生成文件方法
writeFile(new String(out.toByteArray()), outPutFile);
out.close();
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
return outPutFile;
}
public static void writeFile(String content, String path) {
FileOutputStream fos = null;
BufferedWriter bw = null;
try {
File file = new File(path);
fos = new FileOutputStream(file);
bw = new BufferedWriter(new OutputStreamWriter(fos,"utf-8"));
bw.write(content);
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
try {
if (bw != null)
bw.close();
if (fos != null)
fos.close();
} catch (IOException ie) {
}
}
}
}
2.excel转HTML,需要将07+版本转换为03版本
(1)ExcelToHtml.class
public class ExcelToHtml {
/**
* POI将Excel转化为HTML(包含图片,图片以文件形式保存)
*
* @param excel excel全路径
* @param html html全路径
*/
public static void genHtml(String excel, String html,String fileType) throws Exception {
// 创建excel ExcelToHtmlConverter对象
ExcelToHtmlConverter convert = new ExcelToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument())