[英]How to get the Slide number using java via Apache POI API
如何使用Java獲取.ppt
文件中的幻燈片數量。 要訪問.ppt
我們需要Apache POI API-尤其是Slide[]
類。
我從這里使用方法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)
你有沒有嘗試過
int getSlideCount()
它在文檔中。
最近,我想統計自己為考試准備的幻燈片數量。 該問題與您的問題非常相似,即使您的問題是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);
}
}
}
}
您發布的異常幾乎完全不是POI常見問題解答 :
我的代碼使用了一些新功能,可以很好地編譯,但是在與“ 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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.