/**
* 资产批量入库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 "";
}
分享到:
相关推荐
由于给定的内容中存在一些OCR识别错误和重复文字,我将基于提供的有效信息,对Java操作Excel并将其数据导入数据库的知识点进行详细说明。为方便理解和执行,我会先修正可能的OCR扫描错误,并排除重复内容,然后详细...
Java Excel 读写与导入数据库是Java开发中常见的任务,特别是在数据处理和分析场景下。以下将详细讲解这个主题,并提供一些关键知识点。 首先,Java处理Excel文件主要依赖于两个库:Apache POI 和 JExcelAPI。...
标题与描述中的“java excel导入数据库”涉及到的关键知识点主要包括Java编程语言、Apache POI库、Excel文件处理以及数据库操作,具体细节如下: ### Java编程语言 Java是一种广泛使用的面向对象的编程语言,由Sun...
这个“简单Java excel导入数据库 附数据库(mysql)”的项目旨在提供一个基础的学习示例,虽然可能存在一些问题,但其主要功能已经实现,能够帮助初学者理解如何操作。 首先,我们要了解涉及的主要技术点: 1. **...
struts+hibernate实现excel导入数据库 注意:Excel导入是指读服务器端的数据,也就是说,如果想用客户端的Excel是需要把Excel文件先上传到服务器上的,然后再导入,我也是前几天才发现的。
JavaExcel 导入数据库知识点 JavaExcel 是一个基于 Java 语言的 Excel 文件处理库,它提供了对 Excel 文件的读取、写入和操作功能。在本文中,我们将探讨如何使用 JavaExcel 将 Excel 文件导入到数据库中。 Java...
以上就是使用Java实现Excel数据导入数据库的主要步骤和关键知识点。通过熟练掌握这些技术,你将能够构建出高效且可靠的Excel到数据库导入系统。在实际应用中,还可能需要根据具体需求进行调整和定制,如错误处理、...
java读取excel数据导入数据库源码 java读取excel数据导入数据库源码
综上所述,Java Web中Excel数据导入数据库的过程涉及到文件上传、Excel读取、数据处理和数据库操作等多个技术环节。通过合理选择和使用各种库,我们可以构建高效且可靠的导入系统,满足企业对大量数据处理的需求。在...
* 此代码是完成从excel导入电话号码,将正确的电话号码保存到set集合中,因为set集合对于重复的值会覆盖,所以达到了去重复的值的用例,并累计了不正确的电话号码的个数,对电话号码进行了验证有效性。所需要的 dom4...
在Java编程中,将Excel数据导入到MySQL数据库是一项常见的任务,尤其在数据处理和分析的场景下。要完成这个过程,我们需要使用特定的库来读取Excel文件,并使用JDBC(Java Database Connectivity)来与MySQL数据库...
在Java编程环境中,将Excel数据导入到数据库以及将数据库数据导出到Excel是常见的数据处理需求。本篇文章将深入探讨如何使用Java实现这两个功能,主要涉及的技术栈包括Apache POI库用于操作Excel,以及JDBC(Java ...
【大数据Excel通过POI导入数据库通用设计方案】 大数据处理中,Excel作为常见的数据交换格式,其导入到数据库的需求频繁出现。为了提高效率并避免重复工作,本方案旨在提供一种通用的Excel导入策略,利用Apache POI...
对于导入数据库,你需要读取Excel数据,将其转换为适合数据库操作的格式,然后通过数据库连接插入数据。 5. **Excel模板**: 提供的Excel模板可能包含了预定义的格式、样式和数据结构,用户可以按照模板填写数据,...
在本项目中,需要建立到MySQL数据库的连接,执行INSERT或UPDATE语句,以便将Excel数据导入数据库。如果数据库中已存在相同数据,根据描述,会执行UPDATE操作,这需要在SQL语句中设置条件判断。 对于数据导入,如果...
"Excel树形字典,导入数据库"这个主题就聚焦于如何将结构化的Excel数据,特别是树形结构的数据,有效地整合到数据库系统中。 首先,我们需要理解什么是"树形字典"。在Excel中,树形字典通常指的是通过表格形式表示...
要实现Excel导入功能,我们首先需要处理Excel文件。在Java中,我们可以使用Apache POI库来操作Excel文件。POI提供了丰富的API,可以读取、写入Excel文件。在本例中,我们需要使用HSSFWorkbook(对于老版本的Excel ....