Java 读取多个excel工作表

Java 读取多个excel工作表,java,jxl,jexcelapi,Java,Jxl,Jexcelapi,我正试图通过foor循环来阅读电子表格。我想知道这是正确的阅读方式,尤其是图纸属性的使用[在代码中突出显示]: Cell[][] newcell=new Cell[200][200]; int newsheet = workbook1.getNumberOfSheets(); for (int q=1;q < newsheet;q++) { for(int p=0;p < sheet(q).getColumns();p++) { for

我正试图通过foor循环来阅读电子表格。我想知道这是正确的阅读方式,尤其是图纸属性的使用[在代码中突出显示]:

Cell[][] newcell=new Cell[200][200];   
int newsheet = workbook1.getNumberOfSheets();
for (int q=1;q < newsheet;q++)    
{
    for(int p=0;p < sheet(q).getColumns();p++)
    {
         for(int p1=0;p1<sheet(q).getRows();p1++)
                       /*^^^^^^^^^*/
         {
               newcell[p][p1] = sheet(q).getCell(p, p1);
                              /*^^^^^^^^^*/
               if(newcell[p][p1].equals(saved[j]))
               {
                    System.out.print( newcell[p][0]);
                }
          }
     }   
}
Cell[][]newcell=newcell[200][200];
int newsheet=workbook1.getNumberOfSheets();
对于(intq=1;q对于(int p1=0;p1,处理POI中所有单元格的常用方式是:

for(int sheetNum=0; sheetNum < wb.getNumberOfSheets(); sheetNum++) {
    Sheet sheet = wb.getSheetAt(sheetNum);
    for (Row row : sheet) {
        for (Cell cell : row) {
            // Do something here
        }
    }
}
for(int sheetNum=0;sheetNum

也许可以将您的代码切换到类似的格式?

处理POI中所有单元格的常用方式是:

for(int sheetNum=0; sheetNum < wb.getNumberOfSheets(); sheetNum++) {
    Sheet sheet = wb.getSheetAt(sheetNum);
    for (Row row : sheet) {
        for (Cell cell : row) {
            // Do something here
        }
    }
}
for(int sheetNum=0;sheetNum
也许可以将代码切换到类似的地方?

使用jxl(),这应该可以:

for (Sheet sheet:workbook1.getSheets()) {  // getSheet() returns a Sheet[]
  int numCols = sheet.getColumns();        // getColumns() returns an int
  for(for int i = 0; i <= numCols; i++) {
     Cell[] column = sheet.getColumn(i);
     for(Cell cell:column) {               // column is a Cell[]
        if(cell.equals(saved[j])) {
           System.out.print(cell);
        }
     }
  }   
}
for(工作表:workbook1.getSheets()){//getSheet()返回工作表[]
int numcolls=sheet.getColumns();//getColumns()返回一个int
对于(对于int i=0;i和jxl(),这应该可以:

for (Sheet sheet:workbook1.getSheets()) {  // getSheet() returns a Sheet[]
  int numCols = sheet.getColumns();        // getColumns() returns an int
  for(for int i = 0; i <= numCols; i++) {
     Cell[] column = sheet.getColumn(i);
     for(Cell cell:column) {               // column is a Cell[]
        if(cell.equals(saved[j])) {
           System.out.print(cell);
        }
     }
  }   
}
for(工作表:workbook1.getSheets()){//getSheet()返回工作表[]
int numcolls=sheet.getColumns();//getColumns()返回一个int


for(对于int i=0;i,从何处获得NullPointerException?@Andreas_D for(int p1=0;p1@user756742-您的自定义
工作表(int i)
方法中一定有错误。
工作表(q)
有时返回对象,有时返回与
q
相同值的
null
——这不应该发生。@Andreas所以现在我该怎么处理这个问题了。??我以前使用过POI,但你的代码与我的不同。检查这个网站是否有帮助。如果它说NullPointerException,可能是你指向的行没有t存在于范围之外。同时查看您的代码,我将尝试先获取行,然后获取单元格,并且不会使用类似于Gagravarr示例的列。从何处获取NullPointerException?@Andreas_D for(int p1=0;p1@user756742-您的自定义
工作表(int i)
方法中一定有错误。
工作表(q)
有时返回对象,有时返回与
q
相同值的
null
——这不应该发生。@Andreas所以现在我该怎么处理这个问题了。??我以前使用过POI,但你的代码与我的不同。检查这个网站是否有帮助。如果它说NullPointerException,可能是你指向的行没有t不存在于范围之外。同时查看您的代码,我将首先尝试获取行,然后是单元格,并且不会使用类似于Gagravarr示例的列。@Gagravarr:我需要知道这里的行是否意味着它是一个需要导入一些包的类???我正在使用Eclipse,并且已经导入了Jxl.jar,但这并没有提供类似的内容。您使用的是什么库?您的问题用Apache POI标记,这就是这个答案所指的,但现在您提到的是JXL?@Gagravvr-我已经在Java下标记了。我得到了以下错误代码:foor循环中的工作表[for(Row-Row:sheet)]的“只能迭代Java.lang.Iterable的数组或实例”如何克服它?@user756742-
org.apache.poi.ss.usermodel.Sheet
实现了
Iterable
,因此您看到的错误不应该发生。您使用的是jxl,对吗?@Adnreas\D否我确实导入了poi jar[jar name poi-3.2-FINAL]。我需要使用POI的任何版本吗?因为我无法获得ss.usermodel选项以便包含。@Gagravarr:我需要知道这里的行是否意味着它是一个需要导入一些包的类???我正在使用Eclipse,并且已经导入了Jxl.jar,但它没有提供类似的内容。您使用的是什么库g?你的问题用Apache POI标记,这就是这个答案所指的,但现在你提到的是JXL?@Gagravvr-我已经在Java下标记了,无论如何..我得到了这个错误代码“只能在foor循环中的工作表上迭代Java.lang.Iterable的数组或实例”[for(Row:sheet)]如何克服它?@user756742-
org.apache.poi.ss.usermodel.Sheet
实现了
Iterable
,因此您看到的错误不应该发生。您使用的是jxl,对吗?@Adnreas\D否我确实导入了poi jar[jar name poi-3.2-FINAL]。我需要使用POI的任何版本吗?因为我无法获取ss.usermodel选项以便包含。我在foor循环中的工作表[for(Cell[]column:sheet.getColumns())]中得到以下错误代码:“只能迭代java.lang.Iterable的数组或实例”[对于(Cell[]column:sheet.getColumns())]我如何克服它?对于Jxl也是..:(@user756742-我不知道你在做什么。JavaDoc for JExcelApi清楚地告诉我,
jxl.Workbook#getSheets()
返回一个
Sheet
实例数组,因此第一个for循环将起作用(假设,
workbook1
是一个
jxl.Workbook
类型-希望你不要将Apache POI和JExcelApi/jxl混用)我没有混合使用ApachePOI和JXLAPI…我将工作簿声明为工作簿workbook1=workbook.getWorkbook(新文件(“filenamepath”));并已导入jxl.Wookbook。我希望仅使用jxl.workbook类型。@user756742-抱歉,我的错误-查看了错误的for循环,我的代码有一个错误-我会更正它,请稍候。第一个for循环工作正常。问题只存在于第二个for循环中。我收到了此错误代码对于foor循环中的工作表[for(Cell[]column:sheet.getColumns())]来说,“只能迭代一个数组或java.lang.Iterable的一个实例”,我该如何处理它呢?对于Jxl也是:(@user756742-我不知道你在做什么。JavaDoc for JExcelApi清楚地告诉我,