Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法从字符串单元格中获取数值_Java_Spring Boot_Apache Poi - Fatal编程技术网

Java 无法从字符串单元格中获取数值

Java 无法从字符串单元格中获取数值,java,spring-boot,apache-poi,Java,Spring Boot,Apache Poi,获取错误java.lang.IllegalStateException:无法从字符串单元格获取数值 员工类别:` @Entity @Table(name="Employee") public class Employee { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id") private int Id; @Column(name = "firstname") private String Firs

获取错误java.lang.IllegalStateException:无法从字符串单元格获取数值

员工类别:`

@Entity
@Table(name="Employee")
public class Employee {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private int Id;
@Column(name = "firstname")
private String FirstName;
@Column(name = "lastname")
private String LastName;
@Column(name = "email")
private String Email;
@Column(name = "mobile")
private long Mobile;

@Transient
private MultipartFile file;

getters and setters.....
服务类别:

Workbook book=null;
                try {
                    book = new HSSFWorkbook(file.getInputStream());
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                Sheet sheet=book.getSheetAt(0);
                Iterator<Row> rows =    sheet.iterator();

        while(rows.hasNext()) {
            Row row = rows.next();

                emp.setId(row.getCell(0).getNumericCellValue());

                emp.setFirstName(row.getCell(1).getStringCellValue());

                emp.setLastName(row.getCell(2).getStringCellValue());

                emp.setEmail(row.getCell(3).getStringCellValue());

                emp.setMobile(NumberToTextConverter.toText(row.getCell(4).getNumericCellValue()) );
            }
        }
工作簿=null;
试一试{
book=新的HSSFWorkbook(file.getInputStream());
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
Sheet Sheet=book.getSheetAt(0);
迭代器行=sheet.Iterator();
while(rows.hasNext()){
Row=rows.next();
emp.setId(row.getCell(0.getNumericCellValue());
emp.setFirstName(row.getCell(1.getStringCellValue());
emp.setLastName(row.getCell(2.getStringCellValue());
emp.setEmail(row.getCell(3.getStringCellValue());
emp.setMobile(NumberToTextConverter.toText(row.getCell(4.getNumericCellValue());
}
}

执行此操作时,会出现如下错误:java.lang.IllegalStateException:无法从字符串单元格中获取数值

您只需跳过第一行,如下所示:

            Workbook book=null;
            try {
                book = new HSSFWorkbook(file.getInputStream());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Sheet sheet=book.getSheetAt(0);
            Iterator<Row> rows =    sheet.iterator();


    // SKIP HEADER
    if (rows.hasNext()) {
        rows.next();
    }

    while(rows.hasNext()) {
        Row row = rows.next();

            emp.setId(row.getCell(0).getNumericCellValue());

            emp.setFirstName(row.getCell(1).getStringCellValue());

            emp.setLastName(row.getCell(2).getStringCellValue());

            emp.setEmail(row.getCell(3).getStringCellValue());

           emp.setMobile(NumberToTextConverter.toText(row.getCell(4).getNumericCellValue()) );
        }
    }
工作簿=null;
试一试{
book=新的HSSFWorkbook(file.getInputStream());
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
Sheet Sheet=book.getSheetAt(0);
迭代器行=sheet.Iterator();
//箕斗式掘进机
if(rows.hasNext()){
rows.next();
}
while(rows.hasNext()){
Row=rows.next();
emp.setId(row.getCell(0.getNumericCellValue());
emp.setFirstName(row.getCell(1.getStringCellValue());
emp.setLastName(row.getCell(2.getStringCellValue());
emp.setEmail(row.getCell(3.getStringCellValue());
emp.setMobile(NumberToTextConverter.toText(row.getCell(4.getNumericCellValue());
}
}

您只需跳过第一行,如下所示:

            Workbook book=null;
            try {
                book = new HSSFWorkbook(file.getInputStream());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Sheet sheet=book.getSheetAt(0);
            Iterator<Row> rows =    sheet.iterator();


    // SKIP HEADER
    if (rows.hasNext()) {
        rows.next();
    }

    while(rows.hasNext()) {
        Row row = rows.next();

            emp.setId(row.getCell(0).getNumericCellValue());

            emp.setFirstName(row.getCell(1).getStringCellValue());

            emp.setLastName(row.getCell(2).getStringCellValue());

            emp.setEmail(row.getCell(3).getStringCellValue());

           emp.setMobile(NumberToTextConverter.toText(row.getCell(4).getNumericCellValue()) );
        }
    }
工作簿=null;
试一试{
book=新的HSSFWorkbook(file.getInputStream());
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
Sheet Sheet=book.getSheetAt(0);
迭代器行=sheet.Iterator();
//箕斗式掘进机
if(rows.hasNext()){
rows.next();
}
while(rows.hasNext()){
Row=rows.next();
emp.setId(row.getCell(0.getNumericCellValue());
emp.setFirstName(row.getCell(1.getStringCellValue());
emp.setLastName(row.getCell(2.getStringCellValue());
emp.setEmail(row.getCell(3.getStringCellValue());
emp.setMobile(NumberToTextConverter.toText(row.getCell(4.getNumericCellValue());
}
}

您能在出现错误的行旁边设置注释吗?您的excel工作表是否有标题?如果是这样,它将无法解析头。可能是@Razib的重复。我不知道实际是哪一行出现此错误。因此,它试图将字符串头解析为数字。为什么不跳过标题?能否在出现错误的行旁边设置注释?excel工作表是否有标题?如果是这样,它将无法解析头。可能是@Razib的重复。我不知道实际是哪一行出现此错误。因此,它试图将字符串头解析为数字。为什么不跳过标题呢?