我正在尝试将excel文件导入到我的数据库中。我的代码在这里。代码只能导入文本,但我也要导入“INT”。我已将pst.setString(1, row.getCell(0).getStringCellValue());
更改为pst.setInt(1, row.getCell(0).getIntCellValue());
,但这也没有成功。
@FXML
private void importExcel(){
try {
conn = Database.connectdb();
String query = "Insert into registratie(naam, lostandfoundID, kenmerken, labelnummer, luchthaven) values (?,?,?,?,?)";
pst = conn.prepareStatement(query);
String excelFilePath = "Bagage.xlsx";
try (FileInputStream fileIn = new FileInputStream(new File(excelFilePath));
XSSFWorkbook wb = new XSSFWorkbook(fileIn)) {
XSSFSheet sheet = wb.getSheetAt(0);
Row row;
for(int i=1; i<=sheet.getLastRowNum(); i++){
row = sheet.getRow(i);
pst.setString(1, row.getCell(0).getStringCellValue());
pst.setInt(2, row.getCell(1).getCellType());
pst.setString(3, row.getCell(2).getStringCellValue());
pst.setInt(4, row.getCell(3).getCellType());
pst.setString(5, row.getCell(4).getStringCellValue());
pst.execute();
}
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("BagageOverzicht");
alert.setHeaderText(null);
alert.setContentText("Data succesvol geïmporteerd!");
alert.showAndWait();
}
pst.close();
rs.close();
} catch (SQLException | FileNotFoundException ex) {
Logger.getLogger(BagageOverzichtController.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(BagageOverzichtController.class.getName()).log(Level.SEVERE, null, ex);
}
}
答案 0 :(得分:0)
尝试获取字符串值,然后将其解析为int,只需编写Integer.parseInt(yourStringValue);
答案 1 :(得分:0)
获取单元格值:始终对单元格使用正确的类型getter(getStringCellValue()
,getNumericCellValue()
,...)。使用getCellType()
方法确定单元格类型,因为有时数字存储在文本单元格中。
设置数据库值:始终根据数据库列类型使用正确的类型设置器(setString(...)
,setLong(...)
,...)。
如果getter和setter的Java类型不匹配,请使用类型转换。
这样你就可以成功。
答案 2 :(得分:0)
编辑:
使用如下所述的for循环 -
for(int i=1; i<=sheet.getLastRowNum(); i++){
try{
row = sheet.getRow(i);
pst.setString(1, row.getCell(0).getStringCellValue());
pst.setInt(2, row.getCell(1).getNumericCellValue());
pst.setString(3, row.getCell(2).getStringCellValue());
pst.setInt(4, row.getCell(3).getNumericCellValue());
pst.setString(5, row.getCell(4).getStringCellValue());
pst.execute();
} catch(NumberFormatException e){
e.printStackTrace();
}
}