我在尝试阅读Excel 2007电子表格(.xlsx)时遇到问题。我试图使用POI library在JAVA中实现该方法,但是我收到此错误:
线程“main”中的异常java.lang.NoClassDefFoundError: 组织/阿帕奇/的xmlbeans / XmlException
这是我的方法:
public void No_rows() throws IOException {
File inputWorkbook = new File(inputFile);
FileInputStream w = new FileInputStream(inputWorkbook);
XSSFWorkbook workbook = new XSSFWorkbook(w);
XSSFSheet sheet = workbook.getSheetAt(0);
Iterator rows = sheet.rowIterator();
int number=sheet.getLastRowNum();
this.num_rows = number;
w.close();
}
答案 0 :(得分:0)
这是创建和读取* .xlsx文件。如果您收到该错误,请添加jaxp--api-1.4.jar
。
public class Readxlsx {
public static void main(String[] args) {
FileOutputStream fos = null;
FileInputStream fis = null;
try
{
fos = new FileOutputStream(new File("D:\\prac\\sample1.xlsx"));
XSSFWorkbook wb = new XSSFWorkbook();
for(int m=0;m<3;m++){
if(m==0)
{
XSSFSheet sh = wb.createSheet("Sachin");
System.out.println(" Sheet NO:"+m);
for (int k = 0; k < 30; k++) {
XSSFRow row = sh.createRow((short)k);
for (int i = 0; i < 30; i++) {
XSSFCell cell = row.createCell((short)i);
cell.setCellValue(wb.getSheetName(m)+i);
}
}
}
else if(m==1){
XSSFSheet sh1 = wb.createSheet("Dravid");
System.out.println(" Sheet NO:"+m);
for (int k = 0; k < 30; k++) {
XSSFRow row = sh1.createRow((short)k);
for (int i = 0; i < 30; i++) {
XSSFCell cell = row.createCell((short)i);
cell.setCellValue(wb.getSheetName(m)+i);
}
}
}
else
{
XSSFSheet sh2 = wb.createSheet("Dhoni");
System.out.println(" Sheet NO:"+m);
for (int k = 0; k < 30; k++) {
XSSFRow row = sh2.createRow((short)k);
for (int i = 0; i < 30; i++) {
XSSFCell cell = row.createCell((short)i);
cell.setCellValue(wb.getSheetName(m)+i);
}
}
}
}
wb.write(fos);
fos.close();
fis= new FileInputStream(new File("D:\\prac\\sample1.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(fis);
XSSFSheet sheet = workbook.getSheetAt(0);
java.util.Iterator<org.apache.poi.ss.usermodel.Row> rows = sheet.rowIterator();
int number=sheet.getLastRowNum();
System.out.println(" number of rows"+ number);
while (rows.hasNext())
{
XSSFRow row = ((XSSFRow) rows.next());
int r=row.getRowNum();
System.out.println(" Row NO:"+r);
java.util.Iterator<org.apache.poi.ss.usermodel.Cell> cells = row.cellIterator();
while(cells.hasNext()) {
XSSFCell cell = (XSSFCell) cells.next();
String Value=cell.getStringCellValue();
System.out.println(Value);
}
}
}
catch(Exception e) {
e.printStackTrace();
}
}
}
答案 1 :(得分:0)
正如@ Michael-O在评论中所提到的,类路径中缺少XML Bean。可以在http://xmlbeans.apache.org/找到XMLBeans库。
答案 2 :(得分:0)
您必须在构建路径中包含xmlbeans库。它通常位于poi-apache库中的ooxml-lib中。