office系类 转html(ppt,pptx,doc,docx,xlsx,xls)兼容 03 07以上版本

首先贴上依赖包

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.11</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.11</version>
    </dependency>
    <!-- office系列 转 html -->
    <dependency>
        <groupId>org.apache.xmlbeans</groupId>
        <artifactId>xmlbeans</artifactId>
        <version>2.6.0</version>
    </dependency>
    <dependency>
        <groupId>fr.opensagres.xdocreport</groupId>
        <artifactId>org.apache.poi.xwpf.converter.core</artifactId>
        <version>1.0.6</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-scratchpad</artifactId>
        <version>3.9</version>
    </dependency>
    <dependency>
        <groupId>fr.opensagres.xdocreport</groupId>
        <artifactId>org.apache.poi.xwpf.converter.xhtml</artifactId>
        <version>1.0.6</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>3.9</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>4.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-scratchpad</artifactId>
        <version>3.11</version>
    </dependency>
    <dependency>
        <groupId>org.apache.directory.studio</groupId>
        <artifactId>org.apache.commons.io</artifactId>
        <version>2.4</version>
    </dependency>

word转html
下面展示一些 内联代码片

package com.html.utils;

import org.apache.poi.POIXMLDocument;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.converter.WordToHtmlConverter;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.xwpf.converter.core.BasicURIResolver;
import org.apache.poi.xwpf.converter.core.FileImageExtractor;
import org.apache.poi.xwpf.converter.xhtml.XHTMLConverter;
import org.apache.poi.xwpf.converter.xhtml.XHTMLOptions;
import org.apache.poi.xwpf.usermodel.XWPFDocument;

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 java.io.*;

public class WordtoHtml {

    /**
     * word转html
     * filepath:文件名
     * htmlPath: html文件路径
     * folderPath: html文件夹路径
     * originPath: html返回前台路径
     * path:html存放路径
     * imagePath:图片存放路径
     */
   public static String wordToHtml(String fileName ,String imageFile ,String folderPath, String htmFile,String originPath) throws Exception{
       String path = "/html/";
       File f = new File(fileName);
       if (!f.exists()) {
           System.out.println("sorry file does not exists");
       }else{

           if(!new File(folderPath).exists()){
               new File(folderPath).mkdir();
           }

           if(!new File(htmFile).exists()){
               new File(htmFile).createNewFile();
           }else {
                    return path+originPath;
           }
           if(!new File(imageFile).exists()){
                    new File(imageFile).mkdir();
                }
               //1:加载文档到XWPFDocument
               InputStream in = new FileInputStream(f);

               //这里用BufferedInputStream再包装一层,可解决:mark/reset not supported问题
               BufferedInputStream bis = new BufferedInputStream(in);
               if(POIFSFileSystem.hasPOIFSHeader(bis)) {
                   System.out.println("2003及以下");
                   HWPFDocument wordDocument = new HWPFDocument(new FileInputStream(fileName));
                   org.w3c.dom.Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
                   WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(document);
                   //保存图片,并返回图片的相对路径
                   wordToHtmlConverter.setPicturesManager((content, pictureType, name, width, height) -> {
                       try (FileOutputStream out = new FileOutputStream(imageFile +File.separator+ name)) {
                           out.write(content);
                       } catch (Exception e) {
                           e.printStackTrace();
                       }
                       return  "media"+ File.separator+ name;
                   });
                   wordToHtmlConverter.processDocument(wordDocument);
                   org.w3c.dom.Document htmlDocument = wordToHtmlConverter.getDocument();
                   DOMSource domSource = new DOMSource(htmlDocument);
                   StreamResult streamResult = new StreamResult(new File(htmFile));
                   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);
               }
               if(POIXMLDocument.hasOOXMLHeader(bis)) {
                   System.out.println("2007及以上");
                   XWPFDocument document = new XWPFDocument(new FileInputStream(f));
                   //2:加载图片到指定文件夹

                   File imgFile = new File(imageFile);
                   XHTMLOptions options = XHTMLOptions.create();
                   options.setExtractor(new FileImageExtractor(imgFile));
                   // html中图片的路径 相对路径
                   options.URIResolver(new BasicURIResolver("media"));
                   //3:转换XWPFDocument to XHTML
                   OutputStream out = new FileOutputStream(new File(htmFile));
                   XHTMLConverter.getInstance().convert(document, out, options);
                   out.close();
               }
       }
       return path+originPath;
   }

    public static void main(String args[]) throws Exception {
       try {
           wordToHtml("C:\\Users\\sunjw\\Desktop\\02-DB设计.docx","E:/51/media/","E:/51","E:/51/1.html","51/1.html");
       } catch (IOException e) {
           // TODO Auto-generated catch block  
           e.printStackTrace();  
       }  
   }   
}

excel转html

package com.html.utils;

import org.apache.commons.io.FileUtils;
import org.apache.poi.POIXMLDocument;
import org.apache.poi.hssf.converter.ExcelToHtmlConverter;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.w3c.dom.Document;

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 java.io.*;

public class ExceltoHtml {

    /**
     * excel转html
     * filepath:文件名
     * htmlPath:html文件
     * folderPath: html文件夹
     * originPath:html后台返回地址
     * */
    public static String PoiExcelToHtml (String filepath,String htmlPath,String folderPath,String originPath) throws Exception {
        File file = new File(filepath);
        if (!file.exists()) {
            System.out.println("文件不存在");
        } else {
            if (!new File(folderPath).exists()) {
                new File(folderPath).mkdir();
            }
            File htmlFile = new File(htmlPath);

            if (!htmlFile.exists()) {
                new File(htmlPath).createNewFile();
            } else {
                return "/html/" + originPath;
            }

            InputStream is = new FileInputStream(file);
            //这里用BufferedInputStream再包装一层,可解决:mark/reset not supported问题
            BufferedInputStream bis = new BufferedInputStream(is);
            HSSFWorkbook excelBook = new HSSFWorkbook();
            if (POIFSFileSystem.hasPOIFSHeader(bis)) {
                System.out.println("2003及以下");
                excelBook = new HSSFWorkbook(new FileInputStream(file));
            }
            if (POIXMLDocument.hasOOXMLHeader(bis)) {
                System.out.println("2007及以上");
                Transform xls = new Transform();
                XSSFWorkbook workbookOld = new XSSFWorkbook(new FileInputStream(file));
                 xls.transformXSSF(workbookOld, excelBook);
            }
            ExcelToHtmlConverter excelToHtmlConverter = new ExcelToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());
            //去掉Excel头行
            excelToHtmlConverter.setOutputColumnHeaders(false);
            //去掉Excel行号
            excelToHtmlConverter.setOutputRowNumbers(false);

            excelToHtmlConverter.processWorkbook(excelBook);

            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");

            serializer.transform(domSource, streamResult);
            outStream.close();

            //Excel转换成Html
            String content = new String(outStream.toByteArray());
            System.out.println(content);
            FileUtils.writeStringToFile(htmlFile,content,"gb2312");
        }
            return "/html/"+originPath;
        }


    /**
     * 读取单元格
     *
     */
    private static String getCellValue(Cell cell, boolean treatAsStr) {
        if (cell == null) {
            return "";
        }

        if (treatAsStr) {
            cell.setCellType(Cell.CELL_TYPE_STRING);
        }

        if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
            return String.valueOf(cell.getBooleanCellValue());
        } else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
            return String.valueOf(cell.getNumericCellValue());
        } else {
            return String.valueOf(cell.getStringCellValue());
        }
    }

}

ppt转html

package com.yozee.yoa.utils;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import org.apache.commons.io.FileUtils;
import org.apache.poi.POIXMLDocument;
import org.apache.poi.hslf.model.TextRun;
import org.apache.poi.hslf.usermodel.RichTextRun;
import org.apache.poi.hslf.usermodel.SlideShow;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.xslf.usermodel.*;

import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;
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 java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Iterator;

public class PPTtoHtml {


    /**
     * ppt转html
     * filepath:文件名
     * htmlPath: html文件路径
     * folderPath: html文件夹路径
     * originPath: html返回前台路径
     * path:html存放路径
     * imagePath:图片存放路径
     */
    public static String doPPTtoImage(String filepath, String imagePath, String htmlPath, String folderPath, String originPath) throws Exception {
        // 读入PPT文件
        File file = new File(filepath);
        if (!file.exists()) {
            System.out.println("The image you specify don't exit!");
        } else {
            if (!new File(folderPath).exists()) {
                new File(folderPath).mkdir();
            }
            if(!new File(imagePath).exists()){
                new File(imagePath).mkdir();
            }
            File htmlFile = new File(htmlPath);
            if (!htmlFile.exists()) {
                new File(htmlPath).createNewFile();
            } else {
                return "/html/" + originPath;
            }
            FileInputStream is = new FileInputStream(file);
            BufferedInputStream bis = new BufferedInputStream(is);

            if (POIFSFileSystem.hasPOIFSHeader(bis)) {
                System.out.println("2003及以下");
                SlideShow ppt = new SlideShow(new FileInputStream(file));
                is.close();
                Dimension pgsize = ppt.getPageSize();
                org.apache.poi.hslf.model.Slide[] slide = ppt.getSlides();
                FileOutputStream out = null;
                String imghtml = "";
                for (int i = 0; i < slide.length; i++) {
                    System.out.print("第" + i + "页。");

                    TextRun[] truns = slide[i].getTextRuns();
                    for (int k = 0; k < truns.length; k++) {
                        RichTextRun[] rtruns = truns[k].getRichTextRuns();
                        for (int l = 0; l < rtruns.length; l++) {

                            rtruns[l].setFontIndex(1);
                            rtruns[l].setFontName("宋体");
                        }
                    }
                    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等等),注意生成文件路径
                    out = new FileOutputStream(imagePath + "/" + (i + 1) + ".jpeg");

                    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
                    JPEGEncodeParam jep = JPEGCodec.getDefaultJPEGEncodeParam(img);
                    /* 压缩质量 */
                    jep.setQuality(0.9f, true);
                    encoder.encode(img, jep);
                    javax.imageio.ImageIO.write(img, "jpeg", out);
                    //图片在html加载路径
                    String imgs = "media/" + (i + 1) + ".jpeg";
                    imghtml += "<img src=\'" + imgs + "\' style=\'width:1200px;height:830px;vertical-align:text-bottom;\'><br><br><br><br>";

                }
                DOMSource domSource = new DOMSource();
                StreamResult streamResult = new StreamResult(out);
                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);
                out.close();
                String ppthtml = "<html><head><META http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"></head><body>" + imghtml + "</body></html>";
                FileUtils.writeStringToFile(htmlFile, ppthtml, "utf-8");
            }
            if (POIXMLDocument.hasOOXMLHeader(bis)) {
                System.out.println("2007及以上");
                XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
                XSLFSlide[] pptPageXSLFSLiseList = ppt.getSlides();
                Dimension pgsize = ppt.getPageSize();
                FileOutputStream out = null;
                String imghtml = "";
                for (int i = 0; i < pptPageXSLFSLiseList.length; i++) {
                    try {
                        for (XSLFShape shape : pptPageXSLFSLiseList[i].getShapes()) {
                            if (shape instanceof XSLFTextShape) {
                                XSLFTextShape tsh = (XSLFTextShape) shape;
                                for (XSLFTextParagraph p : tsh) {
                                    for (XSLFTextRun r : p) {
                                        r.setFontFamily("宋体");
                                    }
                                }
                            }
                        }
                        BufferedImage img = new BufferedImage(pgsize.width, pgsize.height, BufferedImage.TYPE_INT_RGB);
                        Graphics2D graphics = img.createGraphics();
                        // clear the drawing area
                        graphics.setPaint(Color.white);
                        graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
                        //字体抗齿轮
                        RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                        rh.put(RenderingHints.KEY_COLOR_RENDERING,RenderingHints.VALUE_COLOR_RENDER_QUALITY);
                        rh.put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);
                        graphics.setRenderingHints(rh);
                        // render
                        pptPageXSLFSLiseList[i].draw(graphics);
                        //
                        String Imgname = imagePath + "/" + (i + 1) + ".jpeg";
                        out = new FileOutputStream(Imgname);
                        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
                        JPEGEncodeParam jep = JPEGCodec.getDefaultJPEGEncodeParam(img);
                        /* 压缩质量 */
                        jep.setQuality(1, true);
                        encoder.encode(img, jep);

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

                        //图片在html加载路径
                        String imgs = "media/" + (i + 1) + ".jpeg";
                        imghtml += "<img src=\'" + imgs + "\' style=\'width:1200px;height:830px;vertical-align:text-bottom;\'><br><br><br><br>";
                    } catch (Exception e) {
                        System.out.println(e);
                        System.out.println("第" + i + "张ppt转换出错");
                    }
                }

                DOMSource domSource = new DOMSource();
                StreamResult streamResult = new StreamResult(out);
                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);
                out.close();
                String ppthtml = "<html><head><META http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"></head><body>" + imghtml + "</body></html>";
                FileUtils.writeStringToFile(htmlFile, ppthtml, "utf-8");
            }
        }
        return "/html/" + originPath;
    }

    // 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") || suffixname.equals(".pptx")) {
                isppt = true;
            }
            return isppt;
        } else {
            return isppt;
        }
    }

}

// 工具类
package com.html.utils;
 
import java.util.HashMap;
 
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DataFormat;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
public class Transform { 
    
    private int lastColumn = 0; 
    private HashMap<Integer, HSSFCellStyle> styleMap = new HashMap(); 
    
    public void transformXSSF(XSSFWorkbook workbookOld, HSSFWorkbook workbookNew) {  
        HSSFSheet sheetNew; 
        XSSFSheet sheetOld; 
 
        workbookNew.setMissingCellPolicy(workbookOld.getMissingCellPolicy()); 
   
        for (int i = 0; i < workbookOld.getNumberOfSheets(); i++) { 
            sheetOld = workbookOld.getSheetAt(i); 
            sheetNew = workbookNew.getSheet(sheetOld.getSheetName()); 
            sheetNew = workbookNew.createSheet(sheetOld.getSheetName()); 
            this.transform(workbookOld, workbookNew, sheetOld, sheetNew); 
        }   
    } 
   
    private void transform(XSSFWorkbook workbookOld, HSSFWorkbook workbookNew, 
            XSSFSheet sheetOld, HSSFSheet sheetNew) { 
   
        sheetNew.setDisplayFormulas(sheetOld.isDisplayFormulas()); 
        sheetNew.setDisplayGridlines(sheetOld.isDisplayGridlines()); 
        sheetNew.setDisplayGuts(sheetOld.getDisplayGuts()); 
        sheetNew.setDisplayRowColHeadings(sheetOld.isDisplayRowColHeadings()); 
        sheetNew.setDisplayZeros(sheetOld.isDisplayZeros()); 
        sheetNew.setFitToPage(sheetOld.getFitToPage()); 
         
        sheetNew.setHorizontallyCenter(sheetOld.getHorizontallyCenter()); 
        sheetNew.setMargin(Sheet.BottomMargin, 
                sheetOld.getMargin(Sheet.BottomMargin)); 
        sheetNew.setMargin(Sheet.FooterMargin, 
                sheetOld.getMargin(Sheet.FooterMargin)); 
        sheetNew.setMargin(Sheet.HeaderMargin, 
                sheetOld.getMargin(Sheet.HeaderMargin)); 
        sheetNew.setMargin(Sheet.LeftMargin, 
                sheetOld.getMargin(Sheet.LeftMargin)); 
        sheetNew.setMargin(Sheet.RightMargin, 
                sheetOld.getMargin(Sheet.RightMargin)); 
        sheetNew.setMargin(Sheet.TopMargin, sheetOld.getMargin(Sheet.TopMargin)); 
        sheetNew.setPrintGridlines(sheetNew.isPrintGridlines()); 
        sheetNew.setRightToLeft(sheetNew.isRightToLeft()); 
        sheetNew.setRowSumsBelow(sheetNew.getRowSumsBelow()); 
        sheetNew.setRowSumsRight(sheetNew.getRowSumsRight()); 
        sheetNew.setVerticallyCenter(sheetOld.getVerticallyCenter()); 
   
        HSSFRow rowNew; 
        for (Row row : sheetOld) { 
            rowNew = sheetNew.createRow(row.getRowNum()); 
            if (rowNew != null) 
                this.transform(workbookOld, workbookNew, (XSSFRow) row, rowNew); 
        } 
   
        for (int i = 0; i < this.lastColumn; i++) { 
            sheetNew.setColumnWidth(i, sheetOld.getColumnWidth(i)); 
            sheetNew.setColumnHidden(i, sheetOld.isColumnHidden(i)); 
        } 
   
        for (int i = 0; i < sheetOld.getNumMergedRegions(); i++) { 
            CellRangeAddress merged = sheetOld.getMergedRegion(i); 
            sheetNew.addMergedRegion(merged); 
        } 
    } 
   
    private void transform(XSSFWorkbook workbookOld, HSSFWorkbook workbookNew, 
            XSSFRow rowOld, HSSFRow rowNew) { 
        HSSFCell cellNew; 
        rowNew.setHeight(rowOld.getHeight()); 
  
        for (Cell cell : rowOld) { 
            cellNew = rowNew.createCell(cell.getColumnIndex(), 
                    cell.getCellType()); 
            if (cellNew != null) 
                this.transform(workbookOld, workbookNew, (XSSFCell) cell, 
                        cellNew); 
        } 
        this.lastColumn = Math.max(this.lastColumn, rowOld.getLastCellNum()); 
    } 
   
    private void transform(XSSFWorkbook workbookOld, HSSFWorkbook workbookNew, 
            XSSFCell cellOld, HSSFCell cellNew) { 
        cellNew.setCellComment(cellOld.getCellComment()); 
   
        Integer hash = cellOld.getCellStyle().hashCode(); 
        if (this.styleMap != null && !this.styleMap.containsKey(hash)) { 
            this.transform(workbookOld, workbookNew, hash, 
                    cellOld.getCellStyle(), 
                    (HSSFCellStyle) workbookNew.createCellStyle()); 
        } 
        cellNew.setCellStyle(this.styleMap.get(hash)); 
   
        switch (cellOld.getCellType()) { 
        case Cell.CELL_TYPE_BLANK: 
            break; 
        case Cell.CELL_TYPE_BOOLEAN: 
            cellNew.setCellValue(cellOld.getBooleanCellValue()); 
            break; 
        case Cell.CELL_TYPE_ERROR: 
            cellNew.setCellValue(cellOld.getErrorCellValue()); 
            break; 
        case Cell.CELL_TYPE_FORMULA: 
            cellNew.setCellValue(cellOld.getCellFormula()); 
            break; 
        case Cell.CELL_TYPE_NUMERIC: 
            cellNew.setCellValue(cellOld.getNumericCellValue()); 
            break; 
        case Cell.CELL_TYPE_STRING: 
            cellNew.setCellValue(cellOld.getStringCellValue()); 
            break; 
        default: 
            System.out.println("transform: Unbekannter Zellentyp " 
                    + cellOld.getCellType()); 
        } 
    } 
   
    private void transform(XSSFWorkbook workbookOld, HSSFWorkbook workbookNew, 
            Integer hash, XSSFCellStyle styleOld, HSSFCellStyle styleNew) { 
        styleNew.setAlignment(styleOld.getAlignment()); 
        styleNew.setBorderBottom(styleOld.getBorderBottom()); 
        styleNew.setBorderLeft(styleOld.getBorderLeft()); 
        styleNew.setBorderRight(styleOld.getBorderRight()); 
        styleNew.setBorderTop(styleOld.getBorderTop()); 
        styleNew.setDataFormat(this.transform(workbookOld, workbookNew, 
                styleOld.getDataFormat())); 
        styleNew.setFillBackgroundColor(styleOld.getFillBackgroundColor()); 
        styleNew.setFillForegroundColor(styleOld.getFillForegroundColor()); 
        styleNew.setFillPattern(styleOld.getFillPattern()); 
        styleNew.setFont(this.transform(workbookNew, 
                (XSSFFont) styleOld.getFont())); 
        styleNew.setHidden(styleOld.getHidden()); 
        styleNew.setIndention(styleOld.getIndention()); 
        styleNew.setLocked(styleOld.getLocked()); 
        styleNew.setVerticalAlignment(styleOld.getVerticalAlignment()); 
        styleNew.setWrapText(styleOld.getWrapText()); 
        this.styleMap.put(hash, styleNew); 
    } 
   
    private short transform(XSSFWorkbook workbookOld, HSSFWorkbook workbookNew, 
            short index) { 
        DataFormat formatOld = workbookOld.createDataFormat(); 
        DataFormat formatNew = workbookNew.createDataFormat(); 
        return formatNew.getFormat(formatOld.getFormat(index)); 
    } 
   
    private HSSFFont transform(HSSFWorkbook workbookNew, XSSFFont fontOld) { 
        HSSFFont fontNew = workbookNew.createFont(); 
        fontNew.setBoldweight(fontOld.getBoldweight()); 
        fontNew.setCharSet(fontOld.getCharSet()); 
        fontNew.setColor(fontOld.getColor()); 
        fontNew.setFontName(fontOld.getFontName()); 
        fontNew.setFontHeight(fontOld.getFontHeight()); 
        fontNew.setItalic(fontOld.getItalic()); 
        fontNew.setStrikeout(fontOld.getStrikeout()); 
        fontNew.setTypeOffset(fontOld.getTypeOffset()); 
        fontNew.setUnderline(fontOld.getUnderline()); 
        return fontNew; 
    }  
}

注:因为楼主这边的业务需求是生成html然后返给前台服务器文件路径作为预览,所以有返回值,以上代码仅供参考,具体按照自己业务来实现

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值