1 package com.linkonworks.df.busi.utils; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.IOException; 6 import java.io.InputStream; 7 import java.io.StringWriter; 8 9 import javax.xml.parsers.DocumentBuilderFactory; 10 import javax.xml.parsers.ParserConfigurationException; 11 import javax.xml.transform.OutputKeys; 12 import javax.xml.transform.Transformer; 13 import javax.xml.transform.TransformerException; 14 import javax.xml.transform.TransformerFactory; 15 import javax.xml.transform.dom.DOMSource; 16 import javax.xml.transform.stream.StreamResult; 17 18 import org.apache.poi.hssf.converter.ExcelToHtmlConverter; 19 import org.apache.poi.hssf.usermodel.HSSFWorkbook; 20 import org.apache.poi.openxml4j.exceptions.InvalidFormatException; 21 import org.apache.poi.xssf.usermodel.XSSFWorkbook; 22 23 24 /** 25 * <p> 26 * @ClassName: FilePreview 27 * </p> 28 * <p> 29 * Description: Excel文件转为html元素 30 * </p> 31 * 32 * @author 周宣 33 * @date 2015年12月21日 34 */ 35 public class FilePreview { 36 /** 37 * <p> 38 * Title: convertExceltoHtml 39 * </p> 40 * <p> 41 * Description: 将2003版Excel文件转为html标签元素 42 * </p> 43 * 44 * @author 周宣 45 * @param excelFile 46 * @return 47 * @throws IOException 48 * @throws ParserConfigurationException 49 * @throws TransformerException 50 * @throws InvalidFormatException 51 */ 52 public static String convertExceltoHtml(String path) throws IOException,ParserConfigurationException, TransformerException,InvalidFormatException { 53 HSSFWorkbook workBook = null; 54 String content = null; 55 StringWriter writer = null; 56 File excelFile = new File(path); 57 InputStream is = new FileInputStream(excelFile);; 58 //判断Excel文件是2003版还是2007版 59 String suffix = path.substring(path.lastIndexOf(".")); 60 if(suffix.equals(".xlsx")){ 61 //将07版转化为03版 62 Xssf2Hssf xlsx2xls = new Xssf2Hssf(); 63 XSSFWorkbook xSSFWorkbook = new XSSFWorkbook(is); 64 workBook = new HSSFWorkbook(); 65 xlsx2xls.transformXSSF(xSSFWorkbook, workBook); 66 67 }else{ 68 workBook = new HSSFWorkbook(is); 69 } 70 try { 71 ExcelToHtmlConverter converter = new ExcelToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument()); 72 converter.setOutputColumnHeaders(false);// 不显示列的表头 73 converter.setOutputRowNumbers(false);// 不显示行的表头 74 converter.processWorkbook(workBook); 75 76 writer = new StringWriter(); 77 Transformer serializer = TransformerFactory.newInstance().newTransformer(); 78 serializer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); 79 serializer.setOutputProperty(OutputKeys.INDENT, "yes"); 80 serializer.setOutputProperty(OutputKeys.METHOD, "html"); 81 serializer.transform(new DOMSource(converter.getDocument()), 82 new StreamResult(writer)); 83 84 content = writer.toString(); 85 writer.close(); 86 } finally { 87 try { 88 if (is != null) { 89 is.close(); 90 } 91 if (writer != null) { 92 writer.close(); 93 } 94 } catch (IOException e) { 95 e.printStackTrace(); 96 } 97 } 98 return content; 99 } 100 101 102 103 }