javappt,javappt下载

发布时间:2023-01-08

本文目录一览:

  1. eclipse-java读取ppt
  2. java 怎么把ppt转html
  3. java导出ppt太慢
  4. java 用POI转换PPT的问题

eclipse-java读取ppt

java中读取ppt的实现方法如下:

public class ReadFileUtils {
    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        ReadFileUtils rf = new ReadFileUtils();
        String s = "";
        // s = rf.readTXT("E:/itsm文档的后缀名分析报告2.txt");
        // s = rf.readPDF("E:/memcached全面剖析.pdf");
        // s = rf.readEXCEL("E:/副本工作量及成本模板.xls");
        // s = rf.readEXCEL2007("E:/功能点估算方案.xlsx");
        // s = rf.readWORD("E:/pms中文.doc");
        // s = rf.readWORD2007("E:/功能点估算方法.docx");
        //s = rf.readPPT("E:/精细化管理信息系统项目汇报v1.0.ppt");
        s = rf.readPPT2007("e:/精细化管理信息系统项目汇报v1.0.pptx");
        System.out.println(s);
    }
    // 读取ppt
    public String readPPT(String file) throws IOException {
        StringBuilder sb = new StringBuilder();
        SlideShow ppt = new SlideShow(new HSLFSlideShow(file));
        Slide[] slides = ppt.getSlides();
        //提取文本信息
        for (Slide each : slides) {
            TextRun[] textRuns = each.getTextRuns();
            for (int i=0 ;i < textRuns.length; i++ ) {
                RichTextRun[] richTextRuns = textRuns[i].getRichTextRuns();
                for (int j = 0; j < richTextRuns.length; j++) {
                    sb.append(richTextRuns[j].getText());
                }
                sb.append("\n");
            }
            sb.append("\n");
        }
        return sb.toString();
    }
    // 读取pptx
    public String readPPT2007(String file) throws IOException, XmlException, OpenXML4JException {
        return new XSLFPowerPointExtractor(POIXMLDocument.openPackage(file)).getText();
    }
    // 读取xls文件
    public String readEXCEL(String file) throws IOException {
        StringBuilder content = new StringBuilder();
        HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(file));// 创建对Excel工作簿文件的引用
        for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {
            if (null != workbook.getSheetAt(numSheets)) {
                HSSFSheet aSheet = workbook.getSheetAt(numSheets);// 获得一个sheet
                for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) {
                    if (null != aSheet.getRow(rowNumOfSheet)) {
                        HSSFRow aRow = aSheet.getRow(rowNumOfSheet); // 获得一个行
                        for (short cellNumOfRow = 0; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++) {
                            if (null != aRow.getCell(cellNumOfRow)) {
                                HSSFCell aCell = aRow.getCell(cellNumOfRow);// 获得列值
                                if (this.convertCell(aCell).length() > 0) {
                                    content.append(this.convertCell(aCell));
                                }
                            }
                            content.append("\n");
                        }
                    }
                }
            }
        }
        return content.toString();
    }
    // 读取xlsx文件
    public String readEXCEL2007(String file) throws IOException {
        StringBuilder content = new StringBuilder();
        XSSFWorkbook workbook = new XSSFWorkbook(file);
        for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {
            if (null != workbook.getSheetAt(numSheets)) {
                XSSFSheet aSheet = workbook.getSheetAt(numSheets);// 获得一个sheet
                for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) {
                    if (null != aSheet.getRow(rowNumOfSheet)) {
                        XSSFRow aRow = aSheet.getRow(rowNumOfSheet); // 获得一个行
                        for (short cellNumOfRow = 0; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++) {
                            if (null != aRow.getCell(cellNumOfRow)) {
                                XSSFCell aCell = aRow.getCell(cellNumOfRow);// 获得列值
                                if (this.convertCell(aCell).length() > 0) {
                                    content.append(this.convertCell(aCell));
                                }
                            }
                            content.append("\n");
                        }
                    }
                }
            }
        }
        return content.toString();
    }
    private String convertCell(Cell cell) {
        NumberFormat formater = NumberFormat.getInstance();
        formater.setGroupingUsed(false);
        String cellValue = "";
        if (cell == null) {
            return cellValue;
        }
        switch (cell.getCellType()) {
            case HSSFCell.CELL_TYPE_NUMERIC:
                cellValue = formater.format(cell.getNumericCellValue());
                break;
            case HSSFCell.CELL_TYPE_STRING:
                cellValue = cell.getStringCellValue();
                break;
            case HSSFCell.CELL_TYPE_BLANK:
                cellValue = cell.getStringCellValue();
                break;
            case HSSFCell.CELL_TYPE_BOOLEAN:
                cellValue = Boolean.valueOf(cell.getBooleanCellValue()).toString();
                break;
            case HSSFCell.CELL_TYPE_ERROR:
                cellValue = String.valueOf(cell.getErrorCellValue());
                break;
            default:
                cellValue = "";
        }
        return cellValue.trim();
    }
    // 读取pdf文件
    public String readPDF(String file) throws IOException {
        String result = null;
        FileInputStream is = null;
        PDDocument document = null;
        try {
            is = new FileInputStream(file);
            PDFParser parser = new PDFParser(is);
            parser.parse();
            document = parser.getPDDocument();
            PDFTextStripper stripper = new PDFTextStripper();
            result = stripper.getText(document);
        } finally {
            if (is != null) {
                is.close();
            }
            if (document != null) {
                document.close();
            }
        }
        return result;
    }
    // 读取doc文件
    public String readWORD(String file) throws Exception {
        String returnStr = "";
        try {
            WordExtractor wordExtractor = new WordExtractor(new FileInputStream(new File(file)));
            returnStr = wordExtractor.getText();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return returnStr;
    }
    // 读取docx文件
    public String readWORD2007(String file) throws Exception {
        return new XWPFWordExtractor(POIXMLDocument.openPackage(file)).getText();
    }
    // 读取txt文件
    public String readTXT(String file) throws IOException {
        String encoding = ReadFileUtils.get_charset(new File(file));
        if (encoding.equalsIgnoreCase("GBK")) {
            return FileUtils.readFileToString(new File(file), "gbk");
        } else {
            return FileUtils.readFileToString(new File(file), "utf8");
        }
    }
    private static String get_charset(File file) throws IOException {
        String charset = "GBK";
        byte[] first3Bytes = new byte[3];
        BufferedInputStream bis = null;
        try {
            boolean checked = false;
            bis = new BufferedInputStream(new FileInputStream(file));
            bis.mark(0);
            int read = bis.read(first3Bytes, 0, 3);
            if (read == -1)
                return charset;
            if (first3Bytes[0] == (byte) 0xFF && first3Bytes[1] == (byte) 0xFE) {
                charset = "UTF-16LE";
                checked = true;
            } else if (first3Bytes[0] == (byte) 0xFE
                    && first3Bytes[1] == (byte) 0xFF) {
                charset = "UTF-16BE";
                checked = true;
            } else if (first3Bytes[0] == (byte) 0xEF
                    && first3Bytes[1] == (byte) 0xBB
                    && first3Bytes[2] == (byte) 0xBF) {
                charset = "UTF-8";
                checked = true;
            }
            bis.reset();
            if (!checked) {
                // int len = 0;
                int loc = 0;
                while ((read = bis.read()) != -1) {
                    loc++;
                    if (read >= 0xF0)
                        break;
                    if (0x80 <= read && read <= 0xBF) // 单独出现BF以下的,也算是GBK
                        break;
                    if (0xC0 <= read && read <= 0xDF) { // 双字节 (0xC0 - 0xDF)
                        // (0x80 - 0xBF),也可能在GB编码内
                        continue;
                    } else if (0xE0 <= read && read <= 0xEF) { // 也有可能出错,但是几率较小
                        read = bis.read();
                        if (0x80 <= read && read <= 0xBF) {
                            read = bis.read();
                            if (0x80 <= read && read <= 0xBF) {
                                charset = "UTF-8";
                                break;
                            } else
                                break;
                        } else
                            break;
                    }
                }
                // System.out.println( loc + " " + Integer.toHexString( read )
                // );
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (bis != null) {
                bis.close();
            }
        }
        return charset;
    }
}

java 怎么把ppt转html

ppt保存为html文件的方法: 用c#可以轻松实现转换:

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using PPT = Microsoft.Office.Interop.PowerPoint;
using System.Reflection;
namespace WritePptDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            string path; //文件路径变量
            PPT.Application pptApp; //Excel应用程序变量
            PPT.Presentation pptDoc; //Excel文档变量
            PPT.Presentation pptDoctmp;
            path = @"C:\MyPPT.ppt"; //路径
            pptApp = new PPT.ApplicationClass(); //初始化
            //如果已存在,则删除
            if (File.Exists((string)path))
            {
                File.Delete((string)path);
            }
            //由于使用的是COM库,因此有许多变量需要用Nothing代替
            Object Nothing = Missing.Value;
            pptDoc = pptApp.Presentations.Add(Microsoft.Office.Core.MsoTriState.msoFalse);
            pptDoc.Slides.Add(1, Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutText);
            string text = "示例文本";
            foreach (PPT.Slide slide in pptDoc.Slides)
            {
                foreach (PPT.Shape shape in slide.Shapes)
                {
                    shape.TextFrame.TextRange.InsertAfter(text);
                }
            }
            //WdSaveFormat为Excel文档的保存格式
            PPT.PpSaveAsFileType format = PPT.PpSaveAsFileType.ppSaveAsDefault;
            //将excelDoc文档对象的内容保存为XLSX文档
            pptDoc.SaveAs(path, format, Microsoft.Office.Core.MsoTriState.msoFalse);
            //关闭excelDoc文档对象
            pptDoc.Close();
            //关闭excelApp组件对象
            pptApp.Quit();
            Console.WriteLine(path + " 创建完毕!");
            Console.ReadLine();
            string pathHtml = @"c:\MyPPT";
            PPT.Application pa = new PPT.ApplicationClass();
            pptDoctmp = pa.Presentations.Open(path, Microsoft.Office.Core.MsoTriState.msoTrue, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse);
            PPT.PpSaveAsFileType formatTmp = PPT.PpSaveAsFileType.ppSaveAsHTML;
            pptDoctmp.SaveAs(pathHtml, formatTmp, Microsoft.Office.Core.MsoTriState.msoFalse);
            pptDoctmp.Close();
            pa.Quit();
            Console.WriteLine(pathHtml + " 创建完毕!");
        }
    }
}

这样在创建完毕后就可以在c盘找到MyPPT了。

java导出ppt太慢

java导出ppt幻灯片可采用API的方法来执行,在java程序中导入spire.presentation.jar,然后执行如下代码:

import com.spire.presentation.*;
import com.spire.presentation.drawing.FillFormatType;
import java.awt.*;
public class TEST {
    public static void main(String[] args)throws Exception{
        //创建PPT文档(默认包含一页空白幻灯片)
        Presentation presentation = new Presentation();
        //添加新矩形框到第一个幻灯片
        Rectangle rec = new Rectangle((int) presentation.getSlideSize().getSize().getWidth() / 2 - 250, 80, 500, 150);
        IAutoShape shape = presentation.getSlides().get(0).getShapes().appendShape(ShapeType.RECTANGLE, rec);
        shape.getShapeStyle().getLineColor().setColor(Color.white);
        shape.getFill().setFillType(FillFormatType.NONE);
        //添加文字到矩形框
        shape.appendTextFrame("你好 世界!");
        //设置文字的字体和样式
        PortionEx textRange = shape.getTextFrame().getTextRange();
        textRange.getFill().setFillType(FillFormatType.SOLID);
        textRange.getFill().getSolidColor().setColor(Color.blue);
        textRange.setFontHeight(66);
        textRange.setLatinFont(new TextFont("宋体"));
        //保存文档
        presentation.saveToFile("helloWorld.pptx", FileFormat.PPTX_2013);
        presentation.dispose();
    }
}

java 用POI转换PPT的问题

Shape[] sh = slide[i].getShapes();

如果这页里面有Picture元素,应该是可以得到的。我用poi写出了一个带图的ppt,然后用instanceof测试过,这是没问题的。 可能因为你需要读取的ppt不够规范,比如一个人加图一个习惯,有的人喜欢直接放图,有的人喜欢把图放在某个容器上之类的。 还有可能出问题的地方就是确定有底图的页面没用母板?