java實如今線預覽--poi實現word、excel、ppt轉html

  java實如今線預覽html

  - -之poi實現word、excel、ppt轉htmljava

  簡介web

  java實如今線預覽功能是一個你們在工做中也許會遇到的需求,若是公司有錢,直接使用付費的第三方軟件或者雲在線預覽服務就能夠了,例如永中office、office web 365他們都有云在線預覽服務,就是要錢。apache

  若是想要免費的,能夠用openoffice,還須要藉助其餘的工具(例如swfTools、FlexPaper等)才行,實現原理就是:瀏覽器

  1.經過第三方工具openoffice,將word、excel、ppt、txt等文件轉換爲pdf文件;dom

  2.經過swfTools將pdf文件轉換成swf格式的文件;ide

  3.經過FlexPaper文檔組件在頁面上進行展現。工具

  固然若是裝了Adobe Reader XI,那把pdf直接拖到瀏覽器頁面就能夠直接打開預覽,這樣就不須要步驟二、3了,前提就是客戶裝了Adobe Reader XI這個pdf閱讀器。ui

  我這裏介紹經過poi實現word、excel、ppt轉html,這樣就能夠放在頁面上了。spa

  ###word轉html

  package wordToHtml;

  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.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 PoiWordToHtml {

  public static void main(String[] args) throws Throwable {

  final String path = "D:\\poi-test\\wordToHtml\\";

  final String file = "人員選擇系分.doc";

  InputStream input = new FileInputStream(path + file);

  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 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, "utf-8");

  serializer.setOutputProperty(OutputKeys.INDENT, "yes");

  serializer.setOutputProperty(OutputKeys.METHOD, "html");

  serializer.transform(domSource, streamResult);

  outStream.close();

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

  FileUtils.writeStringToFile(new File(path, "人員選擇系分.html"), content, "utf-8");

  }

  }

  ###excel轉html

  package excelToHtml;

  import java.io.ByteArrayOutputStream;

  import java.io.File;

  import java.io.FileInputStream;

  import java.io.FileNotFoundException;

  import java.io.FileOutputStream;

  import java.io.IOException;

  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.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 PoiExcelToHtml {

  final static String path = "D:\\poi-test\\excelToHtml\\";

  final static String file = "exportExcel.xls";

  public static void main(String args[]) throws Exception {

  InputStream input=new FileInputStream(path+file);

  HSSFWorkbook excelBook=new HSSFWorkbook(input);

  ExcelToHtmlConverter excelToHtmlConverter = new ExcelToHtmlConverter (DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument() );

  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, "utf-8");

  serializer.setOutputProperty (OutputKeys.INDENT, "yes");

  serializer.setOutputProperty (OutputKeys.METHOD, "html");

  serializer.transform (domSource, streamResult);

  outStream.close();

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

  FileUtils.writeStringToFile(new File (path, "exportExcel.html"), content, "utf-8");

  }

  }

  ###ppt轉html

  其實只是ppt轉圖片,有了圖片後放到頁面上去,點擊下一頁就一張張顯示就能夠了。這裏只介紹ppt轉圖片的過程。

  package pptToImg;

  import java.awt.Dimension;

  import java.io.File;

  import java.io.FileInputStream;

  import java.io.FileNotFoundException;

  import java.io.FileOutputStream;

  import java.io.IOException;

  import java.awt.Color;

  import java.awt.Dimension;

  import java.awt.Graphics2D;

  import java.awt.geom.Rectangle2D;

  import java.awt.image.BufferedImage;

  import org.apache.poi.hslf.model.TextRun;

  import org.apache.poi.hslf.record.Slide;

  import org.apache.poi.hslf.usermodel.RichTextRun;

  import org.apache.poi.hslf.usermodel.SlideShow;

  public class PPTtoImage {

  public static void main(String[] args) {

  // 讀入PPT文件

  File file = new File("D:/poi-test/pptToImg/test.ppt");

  doPPTtoImage(file);

  }

  public static boolean doPPTtoImage(File file) {

  boolean isppt = checkFile(file);

  if (!isppt) {

  System.out.println("The image you specify don't exit!");

  return false;

  }

  try {

  FileInputStream is = new FileInputStream(file);

  SlideShow ppt = new SlideShow(is);

  is.close();

  Dimension pgsize = ppt.getPageSize();

  org.apache.poi.hslf.model.Slide[] slide = ppt.getSlides();

  for (int i = 0; i < slide.length; i++) {

  System.out.print("第" + i + "頁。");

  TextRun[] truns = slide[i].getTextRuns();

  for ( int k=0;k

  RichTextRun[] rtruns = truns[k].getRichTextRuns();

  for(int l=0;l

  int index = rtruns[l].getFontIndex();

  String name = rtruns[l].getFontName();

  rtruns[l].setFontIndex(1);

  rtruns[l].setFontName("宋體");

  // System.out.println(rtruns[l].getText());

  }

  }

  BufferedImage img = new BufferedImage(pgsize.width,pgsize.height, BufferedImage.TYPE_INT_RGB);

  Graphics2D graphics = img.createGraphics();

  graphics.setPaint(Color.BLUE);

  graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));

  slide[i].draw(graphics);

  // 這裏設置圖片的存放路徑和圖片的格式(jpeg,png,bmp等等),注意生成文件路徑

  FileOutputStream out = new FileOutputStream("D:/poi-test/pptToImg/pict_"+ (i + 1) + ".jpeg");

  javax.imageio.ImageIO.write(img, "jpeg", out);

  out.close();

  }

  System.out.println("success!!");

  return true;

  } catch (FileNotFoundException e) {

  System.out.println(e);

  // System.out.println("Can't find the image!");

  } catch (IOException e) {

  }

  return false;

  }

  // function 檢查文件是否爲PPT

  public static boolean checkFile(File file) {

  boolean isppt = false;

  String filename = file.getName();

  String suffixname = null;

  if (filename != null && filename.indexOf(".") != -1) {

  suffixname = filename.substring(filename.indexOf("."));

  if (suffixname.equals(".ppt")) {

  isppt = true;

  }

  return isppt;

  } else {

  return isppt;

  }

  }

  }

  ppt轉圖片有個缺陷,就是ppt裏不是宋體的字有些可能會變成框框。

  以上都須要引入poi的jar包。

  要實如今線預覽,只需把轉換  java實如今線預覽

  - -之poi實現word、excel、ppt轉html

  ###簡介

  java實如今線預覽功能是一個你們在工做中也許會遇到的需求,若是公司有錢,直接使用付費的第三方軟件或者雲在線預覽服務就能夠了,例如永中office、office web 365(http://www.officeweb365.com/)他們都有云在線預覽服務,就是要錢0.0

  若是想要免費的,能夠用openoffice,還須要藉助其餘的工具(例如swfTools、FlexPaper等)才行,可參考這篇文章http://blog.csdn.net/z69183787/article/details/17468039,寫的挺細的,實現原理就是:

  1.經過第三方工具openoffice,將word、excel、ppt、txt等文件轉換爲pdf文件;

  2.經過swfTools將pdf文件轉換成swf格式的文件;

  3.經過FlexPaper文檔組件在頁面上進行展現。

  固然若是裝了Adobe Reader XI,那把pdf直接拖到瀏覽器頁面就能夠直接打開預覽,這樣就不須要步驟二、3了,前提就是客戶裝了Adobe Reader XI這個pdf閱讀器。

  我這裏介紹經過poi實現word、excel、ppt轉html,這樣就能夠放在頁面上了。

  ###word轉html

  package wordToHtml;

  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.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 PoiWordToHtml {

  public static void main(String[] args) throws Throwable {

  final String path = "D:\\poi-test\\wordToHtml\\";

  final String file = "人員選擇系分.doc";

  InputStream input = new FileInputStream(path + file);

  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 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, "utf-8");

  serializer.setOutputProperty(OutputKeys.INDENT, "yes");

  serializer.setOutputProperty(OutputKeys.METHOD, "html");

  serializer.transform(domSource, streamResult);

  outStream.close();

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

  FileUtils.writeStringToFile(new File(path, "人員選擇系分.html"), content, "utf-8");

  }

  }

  ###excel轉html

  package excelToHtml;

  import java.io.ByteArrayOutputStream;

  import java.io.File;

  import java.io.FileInputStream;

  import java.io.FileNotFoundException;

  import java.io.FileOutputStream;

  import java.io.IOException;

  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.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 PoiExcelToHtml {

  final static String path = "D:\\poi-test\\excelToHtml\\";

  final static String file = "exportExcel.xls";

  public static void main(String args[]) throws Exception {

  InputStream input=new FileInputStream(path+file);

  HSSFWorkbook excelBook=new HSSFWorkbook(input);

  ExcelToHtmlConverter excelToHtmlConverter = new ExcelToHtmlConverter (DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument() );

  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, "utf-8");

  serializer.setOutputProperty (OutputKeys.INDENT, "yes");

  serializer.setOutputProperty (OutputKeys.METHOD, "html");

  serializer.transform (domSource, streamResult);

  outStream.close();

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

  FileUtils.writeStringToFile(new File (path, "exportExcel.html"), content, "utf-8");

  }

  }

  ###ppt轉html無錫男科醫院哪裏好 http://www.jzspfk.com/

  其實只是ppt轉圖片,有了圖片後放到頁面上去,點擊下一頁就一張張顯示就能夠了。這裏只介紹ppt轉圖片的過程。

  package pptToImg;

  import java.awt.Dimension;

  import java.io.File;

  import java.io.FileInputStream;

  import java.io.FileNotFoundException;

  import java.io.FileOutputStream;

  import java.io.IOException;

  import java.awt.Color;

  import java.awt.Dimension;

  import java.awt.Graphics2D;

  import java.awt.geom.Rectangle2D;

  import java.awt.image.BufferedImage;

  import org.apache.poi.hslf.model.TextRun;

  import org.apache.poi.hslf.record.Slide;

  import org.apache.poi.hslf.usermodel.RichTextRun;

  import org.apache.poi.hslf.usermodel.SlideShow;

  public class PPTtoImage {

  public static void main(String[] args) {

  // 讀入PPT文件

  File file = new File("D:/poi-test/pptToImg/test.ppt");

  doPPTtoImage(file);

  }

  public static boolean doPPTtoImage(File file) {

  boolean isppt = checkFile(file);

  if (!isppt) {

  System.out.println("The image you specify don't exit!");

  return false;

  }

  try {

  FileInputStream is = new FileInputStream(file);

  SlideShow ppt = new SlideShow(is);

  is.close();

  Dimension pgsize = ppt.getPageSize();

  org.apache.poi.hslf.model.Slide[] slide = ppt.getSlides();

  for (int i = 0; i < slide.length; i++) {

  System.out.print("第" + i + "頁。");

  TextRun[] truns = slide[i].getTextRuns();

  for ( int k=0;k

  RichTextRun[] rtruns = truns[k].getRichTextRuns();

  for(int l=0;l

  int index = rtruns[l].getFontIndex();

  String name = rtruns[l].getFontName();

  rtruns[l].setFontIndex(1);

  rtruns[l].setFontName("宋體");

  // System.out.println(rtruns[l].getText());

  }

  }

  BufferedImage img = new BufferedImage(pgsize.width,pgsize.height, BufferedImage.TYPE_INT_RGB);

  Graphics2D graphics = img.createGraphics();

  graphics.setPaint(Color.BLUE);

  graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));

  slide[i].draw(graphics);

  // 這裏設置圖片的存放路徑和圖片的格式(jpeg,png,bmp等等),注意生成文件路徑

  FileOutputStream out = new FileOutputStream("D:/poi-test/pptToImg/pict_"+ (i + 1) + ".jpeg");

  javax.imageio.ImageIO.write(img, "jpeg", out);

  out.close();

  }

  System.out.println("success!!");

  return true;

  } catch (FileNotFoundException e) {

  System.out.println(e);

  // System.out.println("Can't find the image!");

  } catch (IOException e) {

  }

  return false;

  }

  // function 檢查文件是否爲PPT

  public static boolean checkFile(File file) {

  boolean isppt = false;

  String filename = file.getName();

  String suffixname = null;

  if (filename != null && filename.indexOf(".") != -1) {

  suffixname = filename.substring(filename.indexOf("."));

  if (suffixname.equals(".ppt")) {

  isppt = true;

  }

  return isppt;

  } else {

  return isppt;

  }

  }

  }

  ppt轉圖片有個缺陷,就是ppt裏不是宋體的字有些可能會變成框框。

  以上都須要引入poi的jar包。

  要實如今線預覽,只需把轉換獲得的html在新標籤頁打開或者鑲嵌到某塊區域就能夠展示了。獲得的html在新標籤頁打開或者鑲嵌到某塊區域就能夠展示了。

  java實如今線預覽

  - -之poi實現word、excel、ppt轉html

  ###簡介

  java實如今線預覽功能是一個你們在工做中也許會遇到的需求,若是公司有錢,直接使用付費的第三方軟件或者雲在線預覽服務就能夠了,例如永中office、office web 365(http://www.officeweb365.com/)他們都有云在線預覽服務,就是要錢0.0

  若是想要免費的,能夠用openoffice,還須要藉助其餘的工具(例如swfTools、FlexPaper等)才行,可參考這篇文章http://blog.csdn.net/z69183787/article/details/17468039,寫的挺細的,實現原理就是:

  1.經過第三方工具openoffice,將word、excel、ppt、txt等文件轉換爲pdf文件;

  2.經過swfTools將pdf文件轉換成swf格式的文件;

  3.經過FlexPaper文檔組件在頁面上進行展現。

  固然若是裝了Adobe Reader XI,那把pdf直接拖到瀏覽器頁面就能夠直接打開預覽,這樣就不須要步驟二、3了,前提就是客戶裝了Adobe Reader XI這個pdf閱讀器。

  我這裏介紹經過poi實現word、excel、ppt轉html,這樣就能夠放在頁面上了。

  ###word轉html

  package wordToHtml;

  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.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 PoiWordToHtml {

  public static void main(String[] args) throws Throwable {

  final String path = "D:\\poi-test\\wordToHtml\\";

  final String file = "人員選擇系分.doc";

  InputStream input = new FileInputStream(path + file);

  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 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, "utf-8");

  serializer.setOutputProperty(OutputKeys.INDENT, "yes");

  serializer.setOutputProperty(OutputKeys.METHOD, "html");

  serializer.transform(domSource, streamResult);

  outStream.close();

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

  FileUtils.writeStringToFile(new File(path, "人員選擇系分.html"), content, "utf-8");

  }

  }

  ###excel轉html

  package excelToHtml;

  import java.io.ByteArrayOutputStream;

  import java.io.File;

  import java.io.FileInputStream;

  import java.io.FileNotFoundException;

  import java.io.FileOutputStream;

  import java.io.IOException;

  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.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 PoiExcelToHtml {

  final static String path = "D:\\poi-test\\excelToHtml\\";

  final static String file = "exportExcel.xls";

  public static void main(String args[]) throws Exception {

  InputStream input=new FileInputStream(path+file);

  HSSFWorkbook excelBook=new HSSFWorkbook(input);

  ExcelToHtmlConverter excelToHtmlConverter = new ExcelToHtmlConverter (DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument() );

  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, "utf-8");

  serializer.setOutputProperty (OutputKeys.INDENT, "yes");

  serializer.setOutputProperty (OutputKeys.METHOD, "html");

  serializer.transform (domSource, streamResult);

  outStream.close();

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

  FileUtils.writeStringToFile(new File (path, "exportExcel.html"), content, "utf-8");

  }

  }

  ###ppt轉html

  其實只是ppt轉圖片,有了圖片後放到頁面上去,點擊下一頁就一張張顯示就能夠了。這裏只介紹ppt轉圖片的過程。

  package pptToImg;

  import java.awt.Dimension;

  import java.io.File;

  import java.io.FileInputStream;

  import java.io.FileNotFoundException;

  import java.io.FileOutputStream;

  import java.io.IOException;

  import java.awt.Color;

  import java.awt.Dimension;

  import java.awt.Graphics2D;

  import java.awt.geom.Rectangle2D;

  import java.awt.image.BufferedImage;

  import org.apache.poi.hslf.model.TextRun;

  import org.apache.poi.hslf.record.Slide;

  import org.apache.poi.hslf.usermodel.RichTextRun;

  import org.apache.poi.hslf.usermodel.SlideShow;

  public class PPTtoImage {

  public static void main(String[] args) {

  // 讀入PPT文件

  File file = new File("D:/poi-test/pptToImg/test.ppt");

  doPPTtoImage(file);

  }

  public static boolean doPPTtoImage(File file) {

  boolean isppt = checkFile(file);

  if (!isppt) {

  System.out.println("The image you specify don't exit!");

  return false;

  }

  try {

  FileInputStream is = new FileInputStream(file);

  SlideShow ppt = new SlideShow(is);

  is.close();

  Dimension pgsize = ppt.getPageSize();

  org.apache.poi.hslf.model.Slide[] slide = ppt.getSlides();

  for (int i = 0; i < slide.length; i++) {

  System.out.print("第" + i + "頁。");

  TextRun[] truns = slide[i].getTextRuns();

  for ( int k=0;k

  RichTextRun[] rtruns = truns[k].getRichTextRuns();

  for(int l=0;l

  int index = rtruns[l].getFontIndex();

  String name = rtruns[l].getFontName();

  rtruns[l].setFontIndex(1);

  rtruns[l].setFontName("宋體");

  // System.out.println(rtruns[l].getText());

  }

  }

  BufferedImage img = new BufferedImage(pgsize.width,pgsize.height, BufferedImage.TYPE_INT_RGB);

  Graphics2D graphics = img.createGraphics();

  graphics.setPaint(Color.BLUE);

  graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));

  slide[i].draw(graphics);

  // 這裏設置圖片的存放路徑和圖片的格式(jpeg,png,bmp等等),注意生成文件路徑

  FileOutputStream out = new FileOutputStream("D:/poi-test/pptToImg/pict_"+ (i + 1) + ".jpeg");

  javax.imageio.ImageIO.write(img, "jpeg", out);

  out.close();

  }

  System.out.println("success!!");

  return true;

  } catch (FileNotFoundException e) {

  System.out.println(e);

  // System.out.println("Can't find the image!");

  } catch (IOException e) {

  }

  return false;

  }

  // function 檢查文件是否爲PPT

  public static boolean checkFile(File file) {

  boolean isppt = false;

  String filename = file.getName();

  String suffixname = null;

  if (filename != null && filename.indexOf(".") != -1) {

  suffixname = filename.substring(filename.indexOf("."));

  if (suffixname.equals(".ppt")) {

  isppt = true;

  }

  return isppt;

  } else {

  return isppt;

  }

  }

  }

  ppt轉圖片有個缺陷,就是ppt裏不是宋體的字有些可能會變成框框。

  以上都須要引入poi的jar包。

  要實如今線預覽,只需把轉換獲得的html在新標籤頁打開或者鑲嵌到某塊區域就能夠展示了。

相關文章
相關標籤/搜索