我目前正在尝试从java中读取excel文件。
因此,我下载了Apache POI,现在尝试使用此代码:
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
try{
readXLSXFile();
}catch(IOException e){
}
}
public static void readXLSXFile() throws IOException
{
InputStream ExcelFileToRead = new FileInputStream("Desktop/E_WH_2.csv");
XSSFWorkbook wb = new XSSFWorkbook(ExcelFileToRead);
XSSFWorkbook test = new XSSFWorkbook();
XSSFSheet sheet = wb.getSheetAt(0);
XSSFRow row;
XSSFCell cell;
Iterator rows = sheet.rowIterator();
while (rows.hasNext())
{
row=(XSSFRow) rows.next();
Iterator cells = row.cellIterator();
while (cells.hasNext())
{
cell=(XSSFCell) cells.next();
if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING)
{
System.out.print(cell.getStringCellValue()+" ");
}
else if(cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC)
{
System.out.print(cell.getNumericCellValue()+" ");
}
else
{
//U Can Handel Boolean, Formula, Errors
}
}
System.out.println();
}
}
}
Excel文件始终相同,它是一个包含4列的文件,从A1到D1开始,列名称,然后在A2到D4,数据行数未指定。我也尝试了其他代码,但从未使它工作。
使用提供的代码我收到以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap
at Main.readXLSXFile(Main.java:23)
at Main.main(Main.java:14)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections4.ListValuedMap
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 2 more
任何想法是什么问题或任何人可以为我提供工作代码..?
编辑:刚刚更改了excel文件的路径,现在我不再收到任何错误,但也没有输出全部错误。不能那样,可以......?
Edit2 :注意到我尝试读取.csv文件而不是xls文件。现在将其更改为xls,但它与我的第一次编辑相同,我在控制台中没有任何输出(即使我没有收到错误)