java Excel導入數據庫

/**
* 資產批量入庫excel導入
* @return
*/
public String addBatch() {
Transaction t=null;
try {
t=this.getStockinService().getTransaction();
} catch (Exception e1) {
if(t==null){
this.outJsonError( "事物沒有正確啓動!");
return SUCCESS;
}
}
if(t==null){
this.outJsonError( "事物沒有正確啓動!");
return SUCCESS;
}
t.begin();
List list = new ArrayList();
int count=0,errcount=0,existcount=0;//總記錄數,格式錯誤數,已經導入存在的數
try {
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(stockinFile));
HSSFSheet aSheet = workbook.getSheetAt(0);
if (workbook.getSheetAt(0)!= null) {//get the first sheet
for (int rowNumOfSheet = 2; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) {
if (aSheet.getRow(rowNumOfSheet)!=null) {
HSSFRow aRow = aSheet.getRow(rowNumOfSheet);
Object[] o = new Object[9];
count++;
String value="";
String msg="";
for (short cellNumOfRow = 0; cellNumOfRow < 9; cellNumOfRow++) {//aRow.getLastCellNum()
if (aRow.getCell(cellNumOfRow)!=null) {
HSSFCell aCell = aRow.getCell(cellNumOfRow);
value = getCellValue(aCell);
if(cellNumOfRow == 7){
try{
aCell.getDateCellValue();
}catch(Exception e){
this.outJsonError("第"+(rowNumOfSheet+1)+"行,第"+(cellNumOfRow+1)+"列巡檢時間格式不是有效的日期格式");
}
value = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(aCell.getDateCellValue());
}
o[cellNumOfRow] = Tools.processNull(value.trim()).replaceAll("\\s*", "");
String relust = CheckImport(String.valueOf(o[cellNumOfRow]),cellNumOfRow,rowNumOfSheet);
if(!"".equals(relust)){
this.outJsonError(relust);
return SUCCESS;
}
if (cellNumOfRow == 0) {
Stockin stk = stockinService.getStockin(String.valueOf(o[cellNumOfRow]));
if (stk != null) {
this.outJsonError("第"+ (rowNumOfSheet+1) +"行,第"+(cellNumOfRow+1)+"列資產信息已入庫!");
return SUCCESS;
}
}
if (cellNumOfRow == 1) {
Register r = stockinService.getRegister(String.valueOf(o[cellNumOfRow]));
if (r != null) {
if (r.getMarknum().intValue()<=0) {
msg = "第"+ (rowNumOfSheet+1) +"行,第"+(cellNumOfRow+1)+"列資產已經全部入庫!";
this.outJsonError(msg);
return SUCCESS;
}
if ("未確認".equals(r.getSstatus())) {
msg = "第"+ (rowNumOfSheet+1) +"行,第"+(cellNumOfRow+1)+"列資產未審批,請先審批!";
this.outJsonError(msg);
return SUCCESS;
}
} else {
msg = "第"+ (rowNumOfSheet+1) +"行,第"+(cellNumOfRow+1)+"列資產未登記,請先登記!";
this.outJsonError(msg);
return SUCCESS;
}
}
}
}
list.add(rowNumOfSheet-2,o);
}
}
stockinService.saveBatchStockin(list);
t.commit();
this.outJsonMessage( "成功入庫"+count+"條數據!");
}
} catch (Exception e) {
t.rollback();
logger.error("添加資產批量入庫信息失敗!",e);
this.outJsonError( "添加資產批量入庫信息失敗!");
}
return SUCCESS;
}

/**
* 得到Excel表中的值
*
* @param hssfCell
* Excel中的每一個格子
* @return Excel中每一個格子中的值
*/
public static String getCellValue(HSSFCell cell) {
if ((cell == null) || (HSSFCell.CELL_TYPE_BLANK == cell.getCellType())) {
return "";
}
// else if (HSSFCell.CELL_TYPE_BOOLEAN == cell.getCellType()) {
// return String.valueOf(cell.getBooleanCellValue());
// } else if (HSSFCell.CELL_TYPE_FORMULA == cell.getCellType()) {
// return cell.getCellFormula();
// }
else if (HSSFCell.CELL_TYPE_NUMERIC == cell.getCellType()) { //只適用於整數
int cellValue_int = (int)cell.getNumericCellValue();
String cellValue=String.valueOf(cellValue_int);
return cellValue;
} else if (HSSFCell.CELL_TYPE_STRING == cell.getCellType()) {
return String.valueOf(cell.getStringCellValue());
} else {
return String.valueOf(cell.getStringCellValue());
}

}

/**
* 校驗導入數據的有效性
* @param str
* @param colnum
*/
public String CheckImport(String str,int colnum,int rowNumOfSheet){
String msg = "";
if(colnum==0){
if (!lessThan(str,30)) {
msg = "第"+ (rowNumOfSheet+1) +"行資產編號的最大長度不應超過30個字符!";
return msg;
}
if(str.equals("")){
msg = "第"+ (rowNumOfSheet+1) +"行,第"+(colnum+1)+"列不能爲空!";
return msg;
}
}
if(colnum==1){
if(str.equals(""))
return "第"+ (rowNumOfSheet+1) +"行,第"+(colnum+1)+"列不能爲空!";
}
return "";
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章