如何使用java获取.ppt文件中的幻灯片数量。要访问.ppt,我们需要Apache POI API --尤其是Slide[]类。
我正在使用here中的getSlideNumber()方法来检索页码,但仍然收到错误。我想知道如何获得幻灯片编号。
public final class count {
public static void main(String args[]) throws Exception {
File file= new File("C:/Users/THIYAGARAJAN/Desktop/ppt52.ppt");
FileInputStream is = new FileInputStream(file);
SlideShow ppt = new SlideShow(is);
is.close();
Slide[] slide = ppt.getSlides();
System.out.println(slide.length);
for (int i = 0; i < slide.length; i++) {
String title = slide[i].getTitle();
System.out.println("Rendering slide "
+ slide[i].getSlideNumber()
+ (title == null ? "" : ": " + title));
}
}
}这段代码正确吗?
编辑:以下是我在控制台中得到的错误:
Exception in thread "main" java.lang.NoSuchFieldError: filesystem
at org.apache.poi.hslf.HSLFSlideShow.getPOIFSFileSystem(HSLFSlideShow.java:79)
at org.apache.poi.hslf.EncryptedSlideShow.checkIfEncrypted(EncryptedSlideShow.java:51)
at org.apache.poi.hslf.HSLFSlideShow.<init>(HSLFSlideShow.java:141)
at org.apache.poi.hslf.HSLFSlideShow.<init>(HSLFSlideShow.java:115)
at org.apache.poi.hslf.HSLFSlideShow.<init>(HSLFSlideShow.java:103)
at org.apache.poi.hslf.usermodel.SlideShow.<init>(SlideShow.java:121)
at count.count.main(count.java:22) 发布于 2012-01-17 23:30:13
您发布的异常几乎直接来自POI FAQ
我的代码使用了一些新功能,编译得很好,但在使用"MethodNotFoundException“或"IncompatibleClassChangeError”时会失败
您的类路径中几乎肯定有一个旧版本的POI。相当多的运行时和其他包将发布旧版本的POI,所以这是一个很容易遇到的问题,而您没有意识到这一点。
识别有问题的早期jar文件的最好方法是使用几行java代码。它们将加载一个核心POI类,并报告它的来源。
ClassLoader classloader =
org.apache.poi.poifs.filesystem.POIFSFileSystem.class.getClassLoader();
URL res = classloader.getResource(
"org/apache/poi/poifs/filesystem/POIFSFileSystem.class");
String path = res.getPath();
System.out.println("Core POI came from " + path);发布于 2012-01-17 21:08:06
你试过了吗?
int getSlideCount()它在文档中..
发布于 2015-12-23 04:25:51
最近我想数一数我也为了考试而学习的幻灯片的数量。这个问题和你的非常相似,即使你的问题是3年前的,有人可能会发现它很有用。
我给我的程序一个路径,然后它会得到文件夹中的所有ppt,并使用getNoOfSlides方法来计算所有幻灯片的数量。
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;
public final class count {
public static int total=0;
public static void main(String args[]) throws Exception {
File files = new File("F:/Dropbox/KFUPM/Sem 151/IAS/IAS final");
searchInTextFiles(files);
System.out.println("Total Slides in IAS are: ");
System.out.println(total);
}
public static void getNoOfSlides(String path) throws IOException
{
File file = new File(path);
System.out.println(path);
FileInputStream is = new FileInputStream(file);
XMLSlideShow pps = new XMLSlideShow(is);
is.close();
List<XSLFSlide> slides = pps.getSlides();
total+= slides.size();
System.out.println(slides.size());
// System.out.println(slides.size());
}
public static void searchInTextFiles(File dir) throws IOException {
File[] a = dir.listFiles();
for (File f : a) {
if (f.isDirectory()) {
searchInTextFiles(f);
} else if (f.getName().endsWith(".pptx")) {
String path= f.getAbsolutePath();
getNoOfSlides(path);
}
}
}
}https://stackoverflow.com/questions/8894810
复制相似问题