`
阿杜杜不是阿木木
  • 浏览: 21487 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

POI操作Office导出Html文档

 
阅读更多

更新日期:2015-10-12

package com.hrhx.mcc.util;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.List;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.apache.commons.io.FileUtils;
import org.apache.poi.hssf.converter.ExcelToHtmlConverter;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.converter.PicturesManager;
import org.apache.poi.hwpf.converter.WordToHtmlConverter;
import org.apache.poi.hwpf.usermodel.Picture;
import org.apache.poi.hwpf.usermodel.PictureType;
import org.w3c.dom.Document;

public class PoiToHtmlUtil {
	/**
	 * 
	 * @param path 所在的文件夹
	 * @param inFileName 输入Word文档
	 * @param outFileName 输出Html文档
	 * @throws Throwable
	 */
	public static void wordToHtml(String path,String inFileName,String outFileName) throws Throwable {
		
		InputStream input = new FileInputStream(path + inFileName);
		HWPFDocument wordDocument = new HWPFDocument(input);
		WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());
		
		wordToHtmlConverter.setPicturesManager(new PicturesManager() {
			public String savePicture(byte[] content, PictureType pictureType,
					String suggestedName, float widthInches, float heightInches) {
				return suggestedName;
			}
		});
		
		wordToHtmlConverter.processDocument(wordDocument);
		List<Picture> 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(path
							+ pic.suggestFullFileName()));
				} catch (FileNotFoundException e) {
					e.printStackTrace();
				}
			}
		}
		
		Document htmlDocument = wordToHtmlConverter.getDocument();
		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
		DOMSource domSource = new DOMSource(htmlDocument);
		StreamResult streamResult = new StreamResult(outStream);

		TransformerFactory tf = TransformerFactory.newInstance();
		Transformer serializer = tf.newTransformer();
		serializer.setOutputProperty(OutputKeys.ENCODING, "gb2312");
		serializer.setOutputProperty(OutputKeys.INDENT, "yes");
		serializer.setOutputProperty(OutputKeys.METHOD, "html");
		serializer.transform(domSource, streamResult);
		outStream.close();

		String content = new String(outStream.toByteArray());

		FileUtils.write(new File(path, outFileName), content, "gb2312");
	}
	/**
	 * 
	 * @param path 所在的文件夹
	 * @param inFileName 输入Excel文档
	 * @param outFileName 输出Html文档
	 * @throws Throwable
	 */
	@SuppressWarnings("rawtypes")
	public static String  excelToHtml(String path,String inFileName) throws Throwable {
		
		InputStream input = new FileInputStream(path +"/"+ inFileName);
		HSSFWorkbook excelBook = new HSSFWorkbook(input);
		ExcelToHtmlConverter excelToHtmlConverter = new ExcelToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());
		
		//去掉Excel头行
		excelToHtmlConverter.setOutputColumnHeaders(false);
		//去掉Excel行号
		excelToHtmlConverter.setOutputRowNumbers(false);
		
		excelToHtmlConverter.processWorkbook(excelBook);
		List pics = excelBook.getAllPictures();
		if (pics != null) {
			for (int i = 0; i < pics.size(); i++) {
				Picture pic = (Picture) pics.get(i);
				try {
					pic.writeImageContent(new FileOutputStream(path
							+ pic.suggestFullFileName()));
				} catch (FileNotFoundException e) {
					e.printStackTrace();
				}
			}
		}
		
		Document htmlDocument = excelToHtmlConverter.getDocument();

		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
		DOMSource domSource = new DOMSource(htmlDocument);
		StreamResult streamResult = new StreamResult(outStream);
		TransformerFactory tf = TransformerFactory.newInstance();
		Transformer serializer = tf.newTransformer();
		serializer.setOutputProperty(OutputKeys.ENCODING, "gb2312");
		serializer.setOutputProperty(OutputKeys.INDENT, "yes");
		serializer.setOutputProperty(OutputKeys.METHOD, "html");
		//excelToHtmlConverter.OutputColumnHeaders = false;
		serializer.transform(domSource, streamResult);
		outStream.close();

		String content = new String(outStream.toByteArray());
		//去掉Excel中的列A B C D
		//content = StringUtil.regexReplaceStr(content,"<thead>[^<]*[^d]*[^i]*[^v]*[^>]*</thead>", "");
		//去掉Excel中的行1 2 3
		//content = StringUtil.regexReplaceStr(content,"<th class=\"rownumber\">.*?</th>","<th class=\"rownumber\"></th>");
		return content;
		//FileUtils.write(new File(path, outFileName), content, "gb2312");
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    POI导出Excel文件

    Apache POI是一个流行的Java库,用于读取和写入Microsoft Office格式的文件,尤其是Excel(.xlsx和.xls)文件。这个实例提供了两种方法来导出Excel文件:通过Servlet和通过main方法。这两种方法都是在Java环境中操作...

    使用poi从数据库导出excel表的示例

    而Apache POI则是一个用于处理Microsoft Office文档的库,特别是Excel。在这里,我们结合这两个技术,通过Struts1控制器来调用POI功能,将数据库中的数据导出为Excel文件。 要实现这个功能,我们需要以下步骤: 1....

    POI批量导入导出

    【标题】:"POI批量导入导出" ...总的来说,Apache POI是一个强大而灵活的工具,能够帮助Java开发者实现对Excel文件的高效批量操作,满足各种企业级应用的需求,尤其是在数据导入导出、报表生成和跨平台协作的场景下。

    poi导出cvs文件

    Apache POI是Java中一个流行的库,它主要用于处理Microsoft Office格式的文件,如Excel。在这个场景中,我们将探讨如何使用POI来创建CSV文件,这在数据导入导出、数据分析或报表生成等场景中非常常见。 CSV文件因其...

    poiexcel导出html格式

    Apache POI 是一个开源项目,专门用于处理 Microsoft Office 格式的文件,包括 Excel。在 POI 3.10 及以后的版本中,引入了对将 Excel 工作簿转换为 HTML 格式的支持,这极大地扩展了其在数据导出和网页展示中的应用...

    Java使用POI导出Word文档

    Apache POI是Apache软件基金会的一个开源项目,它提供了处理Microsoft Office格式(如Word、Excel和PowerPoint)文档的能力。 在Java中,POI库通过HWPFOI和XWPFPOI两个子项目来支持处理Word文档。HWPFOI处理老版本...

    POI操作PPT文档(导入,导出,读取,添加,拼接,替换文本,页面排序)

    POI(Apache POI)是一款开源的Java库,用于读取和写入各种Microsoft Office文件格式,包括PPT文档。本文档将介绍如何使用POI操作PPT文档,包括导入、导出、读取、添加、拼接、替换文本、页面排序等操作。 一、POI...

    SpringMVC POI Excel 生成导出

    SpringMVC 是一个基于 Java 的 Web 框架,POI 是一个 Java 库,用于操作 Microsoft Office 文件格式,Excel 是一个电子表格软件。今天,我们将在 SpringMVC 中使用 POI 生成 Excel 并导出。 标题解释 "SpringMVC ...

    poi 导出多表头

    Apache POI 是一个流行的 Java 库,用于读取和写入 Microsoft Office 文件格式,特别是 Excel。在本场景中,我们关注的是如何使用 POI 来创建具有复杂表头的 Excel 导出功能。多表头通常指的是在 Excel 表格中拥有多...

    poi多线程大数据导出excel文件.zip

    在IT行业中,处理大数据量的Excel文件是一项挑战,特别是在数据导出时,如果单线程操作,可能会导致性能瓶颈和长时间的等待。Apache POI是一个流行的Java库,它允许开发者创建、修改和显示Microsoft Office格式的...

    使用POI筛选字段导出Excel,以及条件查询和指定数据导出

    使用POI筛选字段导出Excel,以及条件查询和指定数据导出

    JAVA不使用POI,用PageOffice动态导出Word文档[参考].pdf

    PageOffice是一款由 Zhuozhengsoft 公司开发的Java控件,它可以直接在服务器端操作Word、Excel、PDF等Office文档,无需借助Microsoft Office,降低了系统的资源消耗。在这个场景下,我们不再依赖POI,而是利用Page...

    poi导出,导出excel文件

    本篇将详细讲解如何使用Apache POI进行Excel文件的导出操作。 首先,我们需要了解Apache POI的基本概念。Apache POI是一个Java库,它允许开发者在Java应用程序中处理Microsoft Office格式的文档。它提供了HSSF...

    poi导出根据模板导出excel和简单列表导出excel源码

    Apache POI 是一个开源项目,专门用于处理 Microsoft Office 格式的文件,如 Word、Excel 和 PowerPoint。在本案例中,我们关注的是如何使用 Apache POI 库来导出 Excel 文件,特别是根据模板导出和简单列表导出。...

    poi基于模板导出excel

    Apache POI 是一个用于读写 Microsoft Office 格式文件的 Java 库,其中包括对 Excel 文件的支持。在实际开发过程中,经常会遇到需要根据现有的 Excel 模板来填充数据并生成新的 Excel 文件的需求。这种场景下,我们...

    java_poi实现excel导入导出

    Java POI 的主要特点是可以在 Java 应用程序中读取、写入和操作 Office 文件。 2. Java POI 的组成 Java POI 由多个组件组成,每个组件负责处理不同的 Office 文件格式。以下是 Java POI 的主要组件: * POIFS ...

    POI的EXCEL导出,自动换行

    Apache POI是一个流行的Java库,用于创建和维护Microsoft Office文档。它包括对Word(DOCX),Excel(XLSX)等文件格式的支持。对于Excel文件的操作主要通过两个核心API来完成:`HSSFWorkbook`和`XSSFWorkbook`,...

    POI按照模板导出Excel

    Apache POI是一个强大的库,它允许Java程序员操作Microsoft Office格式的文件。在Excel方面,POI支持HSSF(Horizontally Stored SpreadSheet Format)和XSSF(XML Spreadsheet Format),分别对应旧版的BIFF8格式和...

    用poi操作excele的导入导出

    本篇将详细介绍如何利用Apache POI进行Excel的导入与导出操作。 一、Apache POI简介 Apache POI 是一个开源项目,它提供了API,可以处理Microsoft Office格式的文件,尤其是Excel。POI支持两种主要的Excel文件格式...

    SpringBoot +Mybatis +POI导入、导出Excel文件

    而Apache POI是Java领域用于处理Microsoft Office文档的库,特别适合处理Excel文件。 1. **SpringBoot与Mybatis集成** - 创建SpringBoot项目,添加Mybatis和相关依赖,包括MySQL驱动和Mybatis-Spring-Boot-Starter...

Global site tag (gtag.js) - Google Analytics