我一直在编写一个在名册上写名字的程序,并编写了大部分查找和排序的方法。 此方法的目标是打开现有文件,在单元格中写入,然后另存为不同的文件。 我认为问题可能出在模板文件上,因为它由 2 张纸组成。一张纸用于收集所有姓名,第二张纸有一张图像,其中的文本框链接到第一页以打印到文本框上
public static void FindTemplate(String Session) throws FileNotFoundException, IOException
{
if(Session.toLowerCase().contains("Level 1".toLowerCase()))
// generic roster as an else
{
FileInputStream In = new FileInputStream("Directory\\Templates\\A Template.xls");
HSSFWorkbook wb = new HSSFWorkbook(In);
HSSFSheet sheet = wb.getSheetAt(0);
Cell cell = null;
cell = sheet.getRow(0).getCell(0);
cell.setCellValue("Found it");//just as a test for now
In.close();
wb.write(new FileOutputStream("WA1.xls"));
wb.close();
}
}
当我运行它时,我收到一个我不明白的大错误。错误位于 wb.write(new FileOutputStream("WA1.xls"));我以前用其他方法保存过这样的文件。还创建了一个新文件,但它已损坏。
Error:
WAException in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections4/bidimap/TreeBidiMap
at org.apache.poi.hpsf.Section.<init>(Section.java:178)
at org.apache.poi.hpsf.MutableSection.<init>(MutableSection.java:41)
at org.apache.poi.hpsf.PropertySet.init(PropertySet.java:494)
at org.apache.poi.hpsf.PropertySet.<init>(PropertySet.java:196)
at org.apache.poi.hpsf.MutablePropertySet.<init>(MutablePropertySet.java:44)
at org.apache.poi.hpsf.SpecialPropertySet.<init>(SpecialPropertySet.java:47)
at org.apache.poi.hpsf.DocumentSummaryInformation.<init>(DocumentSummaryInformation.java:99)
at org.apache.poi.hpsf.PropertySetFactory.create(PropertySetFactory.java:116)
at org.apache.poi.POIDocument.getPropertySet(POIDocument.java:236)
at org.apache.poi.POIDocument.getPropertySet(POIDocument.java:197)
at org.apache.poi.POIDocument.readPropertySet(POIDocument.java:175)
at org.apache.poi.POIDocument.readProperties(POIDocument.java:158)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.updateEncryptionInfo(HSSFWorkbook.java:2295)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.getBytes(HSSFWorkbook.java:1506)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.write(HSSFWorkbook.java:1428)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.write(HSSFWorkbook.java:1414)
at rosterWrite.FindTemplate(rosterWrite.java:79)
at rosterWrite.main(rosterWrite.java:24)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections4.bidimap.TreeBidiMap
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 18 more
最佳答案
错误消息是Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections4.bidimap.TreeBidiMap
,这意味着您的项目缺少TreeBidiMap
> Apache commons-collections 库的类。如果您使用 Maven,只需将 commons-collection 库添加到您的 pom.xml 中,如 this page显示。如果没有,您需要从official site下载该库并将其放入您的项目中。
关于java - Apache POI : Open Template, 写入,另存为。崩溃并创建损坏的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47686549/