在下面提到的代码中,我试图从excel表中获取数据并将它们存储在数组中。我编写了代码来从我的ReadExcelData方法中的excel文件中获取数据。现在我面临的问题是在我的主要方法中,当我使用数组打印数据时,数据被多次打印。我发现,因为我已经在两个内部使用了System.out.println()来进行lop,这就是为什么它会多次打印。为了解决这个问题,我删除了System.out.println()(注释 - 在下面的代码中,粗体System.out.println()是我从ReadExcelData方法中删除的那个)一旦我做了,我就无法得到任何输出。请告诉我应该怎样做才能从ReadExcelData中获取数据而不打印它,因为我想在我的main方法中打印数据。
package com.selenium;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;
@SuppressWarnings("unused")
public class ReadExcelData {
static String[] data = new String[15];
public String getData() throws InvalidFormatException, IOException{
String data="Initial";
File file = new File("C:\\Users\\Admin\\Desktop\\ScreenShot\\Excel.xls");
FileInputStream input = new FileInputStream(file);
Workbook work = WorkbookFactory.create(input);
Sheet sheet = work.getSheet("Data");
int rownum=sheet.getLastRowNum();
//System.out.println("Row number = "+rownum);
for(int i=0;i<rownum+1; i++){
Row row=sheet.getRow(i);
if(row != null){
for(int j=0; j<row.getLastCellNum();j++){
//System.out.println(row.getLastCellNum());
if(row.getCell(j) != null){
data = row.getCell(j).getStringCellValue();
if(data != null){
**System.out.println(data);**
}//if2
}//if1
}//for2
}//if3
}//for1
return data;
}//getdata
public static void main(String[] args) throws InvalidFormatException, IOException{
ReadExcelData read =new ReadExcelData();
for(int i=0;i<data.length;i++){
data[i]= read.getData();
}
}//main
}//class
Code block which is giving problem-
if(data != null){
**System.out.println(data);**
}//if2
答案 0 :(得分:1)
你正在循环调用你的方法:
for(int i=0;i<data.length;i++){
data[i]= read.getData();
}
所以它打印多次。
如果您想将所有值都放在data []中,那么您应该进行以下更改
public String[] getData() throws InvalidFormatException, IOException{
String[] data = new String[15];
...
int k =0;
...
String cellVal = row.getCell(j).getStringCellValue();
if(cellVal != null){
data[k++] = cellVal;
}//if2
....
return data;
}
从main方法只调用一次:
String[] excelData = read.getData();
答案 1 :(得分:1)
问题是,对于Object数据的每个单元格,您正在调用填充它的方法。 你有:
data[i]= read.getData();
然后你的方法被调用了15次,打开,读取并返回整个文件15次。
只需从您的主程序中删除循环,一切都将按您的意愿运行。