我刚刚开始学习Apache POI,我想在excel中制作一个像这样的超级简单的电子表格,
+----------+----------+----------+----------+----------+
| 1 | 2 | 3 | 4 | 5 |
+----------+----------+----------+----------+----------+
我写的代码如下,
public void exportTable() throws IOException
{
FileOutputStream fos=new FileOutputStream(new File("C:\\Users\\*****\\OneDrive\\Desktop\\excel.xlsx"));
XSSFWorkbook wb=new XSSFWorkbook();
XSSFSheet ws=wb.createSheet();
XSSFRow row=ws.createRow(0);
for(int i=0;i<=5;i++)
{
Cell cell=row.createCell(i);
cell.setCellValue(i);
}
wb.write(fos);
fos.close();
}
我收到一个NoClassDefFoundError
我正在使用以下jar文件。
1)poi-4.1.0.jar
2)poi-examples-4.1.0.jar
3)poi-excelant-4.1.0.jar
4)poi-ooxml-4.1.0.jar
5)poi-ooxml-schemas-4.1.0.jar
6)poi-scratchpad-4.1.0.jar
7)xmlbeans-3.1.0.jar
8)curvesapi-1.06.jar
我正在netbeans上使用jdk 1.8
P.S。我对Apache POI的经验几乎为零,所以如果您能写详细的答案,我将不胜感激。谢谢
P.P.S。 我不认识Maven
编辑:所以我做了几件事
1)我从“ common-collections”中导入了所有jar文件。
2)我将“ .xls”更改为“ .xlsx”
3)我也导入了“ common-compress”,现在可以正常工作了。谢谢!
答案 0 :(得分:2)
如果Java虚拟机或ClassLoader实例尝试加载类的定义(作为常规方法调用的一部分或使用新表达式创建新实例的一部分),并且没有定义,则将抛出该错误可以找到该班级的。
只需将目标文件扩展名更改为.xlsx
,它就可以正常工作。
我建议您不要添加jar文件,而只是转换为maven项目。 Maven项目非常棒,可以进行项目和依赖项管理。
并为apache POI添加以下依赖项
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.0</version>
</dependency>
现在,您可以轻松使用XSSFWorkbook。请看下面的代码,以供您参考,从我的角度来看,它工作正常。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class TestXSSF {
static XSSFWorkbook workbook;
static FileInputStream file;
public static void main(String args[]) throws IOException {
FileOutputStream fos=new FileOutputStream(new File(System.getProperty("user.dir")+"/input_data/excel.xlsx"));
XSSFWorkbook wb=new XSSFWorkbook();
XSSFSheet ws=wb.createSheet();
XSSFRow row=ws.createRow(0);
for(int i=0;i<=5;i++)
{
Cell cell=row.createCell(i);
cell.setCellValue(i);
}
wb.write(fos);
fos.close();
}
}
答案 1 :(得分:2)
错误消息指出: java.lang.NoClassDefFoundError:org / apache / commons / collections4 / ListValuedMap
那是来自Apache的commons-collections4库。 https://commons.apache.org/proper/commons-collections/ 看来您的课程路径上没有这个库。
对于maven,请使用以下依赖项:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.3</version>
</dependency>