【发布时间】:2020-08-27 19:55:25
【问题描述】:
下面是从 9 个 excel 单元格中读取数据的代码。
Excel 数据格式位于代码末尾。 它有两行。 它从不读取最后一个单元格的数据,尝试了所有的组合
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.Cell;
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;
public class Exceldata {
public static XSSFWorkbook workbook = null;
public static XSSFSheet sheet = null;
public static XSSFRow row = null;
public static XSSFCell cell = null;
public static String[] col_name= new String[9];
public static String[][] user_data=new String[2][9];
public static void main(String[] args) {
try {
File src= new File("C:\\Users\\Public\\Testdata.xlsx");
FileInputStream fis=new FileInputStream(src);
XSSFWorkbook book= new XSSFWorkbook(fis);
XSSFSheet sheet_userdata= book.getSheet("UserDetails");
for(int p=0;p<book.getNumberOfSheets();p++)
{
System.out.println("Sheet Name is : "+ book.getSheetName(p));
}
row=sheet_userdata.getRow(0);
for(int j =0;j<9;j++)
{
cell=row.getCell(j);
col_name[j]=String.valueOf(cell.getStringCellValue());
System.out.println(col_name[j]);
}
//Read data from cells
for(int i=0;i<sheet_userdata.getLastRowNum();i++)
{
row=sheet_userdata.getRow(i+1);
for(int k=0;k<9;k++)
{
if((cell=row.getCell(k))!= null)
{
switch(cell.getCellType())
{
case Cell.CELL_TYPE_STRING:
if(k==1)
{
user_data[i][k]=String.valueOf(cell.getStringCellValue());
System.out.println(col_name[k]+" is : ");
System.out.println(user_data[i][k]);
}else if(k==2)
{
user_data[i][k]=String.valueOf(cell.getStringCellValue());
System.out.println(col_name[k]+" is : ");
System.out.println(user_data[i][k]);
}
else if(k==3)
{
user_data[i][k]=String.valueOf(cell.getStringCellValue());
System.out.println(col_name[k]+" is : ");
System.out.println(user_data[i][k]);
}
else if(k==5)
{
user_data[i][k]=String.valueOf(cell.getStringCellValue());
System.out.println(col_name[k]+" is : ");
System.out.println(user_data[i][k]);
}
else if(k==6)
{
user_data[i][k]=String.valueOf(cell.getStringCellValue());
System.out.println(col_name[k]+" is : ");
System.out.println(user_data[i][k]);
}
else if(k==7)
{
user_data[i][k]=String.valueOf(cell.getStringCellValue());
System.out.println(col_name[k]+" is : ");
System.out.println(user_data[i][k]);
}
else if(k==8)
{
user_data[i][k]=String.valueOf((cell.getStringCellValue()));
System.out.println(col_name[k]+" is : ");
System.out.println(user_data[i][k]);
}
break;
case Cell.CELL_TYPE_NUMERIC:
if(k==0)
{
user_data[i][k]=String.valueOf((long)(cell.getNumericCellValue()));
System.out.println(col_name[k]+" is : ");
System.out.println(user_data[i][k]);
}
else if(k==4)
{
user_data[i][k]=String.valueOf((long)(cell.getNumericCellValue()));
System.out.println(col_name[k]+" is : ");
System.out.println(user_data[i][k]);
}
break;
case Cell.CELL_TYPE_BOOLEAN:
user_data[i][k]=cell.getStringCellValue();
System.out.println(user_data[i][k]);
break;
case Cell.CELL_TYPE_BLANK:
//user_data[i][k]="";
if(k==8)
{
user_data[i][k]=String.valueOf((cell.getStringCellValue()));
System.out.println(col_name[k]+" is : ");
System.out.println(user_data[i][k]);
}
break;
case Cell.CELL_TYPE_FORMULA:
user_data[i][k]=String.valueOf(cell.getCellFormula());
System.out.println(user_data[i][k]);
break;
case Cell.CELL_TYPE_ERROR:
user_data[i][k]=String.valueOf(cell.getErrorCellString());
System.out.println(user_data[i][k]);
break;
}
}
}
}
}catch(Exception e)
{
e.printStackTrace();
}
}
}
XLS 表数据有两行这样(注意:状态单元格为空)
S.No.| ID |First Name |Last Name |联系电话|Email id |用户模式|频道|状态 1 test@test.com Ram singh 45455666 xyz@test.com 密码 XYZ 空单元格
【问题讨论】:
-
对于第一个选项,它在这一行给出错误