poi将office转html含图片,超赞!!!

本文介绍如何利用Apache POI库将Word、Excel和PowerPoint文档转换成HTML格式,强调了版本匹配的重要性,提供了转换过程的详细步骤。
摘要由CSDN通过智能技术生成

引入的jar包版本一定要一致,不然会报乱七八糟的错误.

前四个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())
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值