java导入EXCEL数据到数据库

Java实现Excel导入数据到数据库(支持xls、xlsx) Java实现Excel导入(支持xls、xlsx) 阅读详情

1、前台页面,如下图所示,注意划红线区域不要写错,尤其是form表单,enctype="multipart/form-data" 不要忘写

2. 后台Controller

@RequestMapping("import-employee")
	public String importEmployee(EmployeeModel eQuery,
			 @RequestParam("file") MultipartFile file) {
		List<EmployeeModel> emp= new ArrayList<EmployeeModel>();
		if (!file.isEmpty()) {
			String extent = importEmployeeService.getExtensionName(file
					.getOriginalFilename());   //获取文件后缀名 getExtensionName 后文有介绍继续往下看
			if (StringUtil.isEmpty(extent)) {
				return "redirect:student-manage.htm";
			}
			String tempFileName = (new Date()).getTime() + "." + extent;  //生成随机新的文件名,主要避免缓存带来的干扰
			File temp = new File(tempFileName);  
			try {
				temp.createNewFile(); //创建新文件
                                file.transferTo(temp);//将上传文件写入服务器指定文件
                        } catch (IOException e1) {
	                    logger.error(e1.getMessage());
                        }try {
	                        emp = importEmployeeService.getEmployeeInfomation(temp); //用来读取excel中的数据,并插入到数据库
                        } catch (Exception e) {
	                    return "redirect:student-manage.htm";
                        }if (temp.exists()) {
	                    temp.delete(); //删除临时文件
                        }
                    }
                        return "redirect:student-manage.htm";
            }

获取后缀名方法

public   String getExtensionName(String filename) {
		if ((filename != null) && (filename.length() > 0)) {
			int dot = filename.lastIndexOf('.');
			if ((dot > -1) && (dot < (filename.length() - 1))) {
				return filename.substring(dot + 1);
			}
		}
		return filename;
	}

核心部分

public List<EmployeeModel> getEmployeeInfomation(File file) {

		Workbook wb = null;
		Row row = null;
		Row row2 = null;
		Sheet sheet = null;
		InputStream is = null;
		List<EmployeeModel> list;
		try {
			// 设置要读取的文件路径
			is = new FileInputStream(file);
			// 如果不支持标记、重置, 则包装它
			if (!is.markSupported()) {
				is = new PushbackInputStream(is, 8);
			}

			// //创建工作薄,读取2003Excel和2007Excel
			// HSSFWorkbook相当于一个excel文件,HSSFWorkbook是解析excel2007之前的版本(xls)

			// 之后版本使用XSSFWorkbook(xlsx)
			if (POIFSFileSystem.hasPOIFSHeader(is)) {
				wb = new HSSFWorkbook(is);
			} else if (POIXMLDocument.hasOOXMLHeader(is)) {
				wb = new XSSFWorkbook(OPCPackage.open(is));

			}
			is.close();
		} catch (IOException e) {
			error = "Read error for File format ";
			e.printStackTrace();
			return null;
		} catch (InvalidFormatException e2) {
			error = "文件读取错误请检查文件格式是否正确";
			e2.printStackTrace();
			return null;
		} catch (Exception e3) {
			error = "文件读取错误请检查文件格式是否正确";
			e3.printStackTrace();
			return null;
		}
		// 获取第一个工作薄
		sheet = wb.getSheetAt(0);
		list = new ArrayList<EmployeeModel>();
		// 获取总行数
		int sumRow = sheet.getLastRowNum();
		// 检查所有的行
		//int maxRow = ExcelConstants.MAX_ROWS;			
		// System.out.println("最大"+maxRow+"行、、、、、、、、、、、、、、、、、、、、、");
		if (sumRow <0) {
//			error = "工作表的行数不能大于" + maxRow + ",请重新设定导入数据的行数,分到几张表中再次导入!";
			return null;

		} 
		SimpleDateFormat pattFormat = new SimpleDateFormat("dd/MM/yyyy");
		if(sumRow>50){
			List<SystemItemConfigModel> emp = systemItemConfigMapper.getSystemItemResultByCode("ImportEmployeeNum");
			String empNum=null;
			if(emp!=null&&emp.size()>0){
				//	https://137.200.48.72:8443/upload
				  empNum=emp.get(0).getItem_name();
			}
			sumRow=Integer.parseInt(empNum); 
		}
		// 获得行(默认重 0开始)
		for (int i = 1; i <= sumRow; i++) {
			EmployeeModel model1 = new EmployeeModel();
			// 获取行
			row = sheet.getRow(i);
			// 如果整行不能为空 执行下列代码
			if (row.getCell(0) != null && row.getCell(1) != null) {
					model1.setEmployeeCode(getValue(row.getCell(1)));  //getValue 用来判断excel中的数据类型,例如时间进行格式化
					model1.setName(getValue(row.getCell(2)));
					... 此处省略一些字段,根据需要自行调整
					EmployeeModel employeeModel = employeeMapper.getByCode(model1.getEmployeeCode());
					if (employeeModel == null) {
						employeeMapper.insert(model1);
					}else{
						employeeMapper.updateEmployee(model1);
					}			
					list.add(model1);
				}

		}
		return list;
	}

	//解决excel类型问题,获得数值  
    public static String getValue(Cell cell) {  
        String value = "";  
        if(null==cell){  
            return value;  
        }  
        switch (cell.getCellType()) {  
        	//数值型  
        	case Cell.CELL_TYPE_NUMERIC:  
            if (HSSFDateUtil.isCellDateFormatted(cell)) {  
                //如果是date类型则 ,获取该cell的date值  
                Date date = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());  
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
                value = format.format(date);;  
            }else {// 纯数字  
                BigDecimal big=new BigDecimal(cell.getNumericCellValue());  
                value = big.toString();  
                //解决1234.0  去掉后面的.0  
                if(null!=value&&!"".equals(value.trim())){  
                     String[] item = value.split("[.]");  
                     if(1<item.length&&"0".equals(item[1])){  
                         value=item[0];  
                     }  
                }  
            }  
            break;  
            //字符串类型   
	        case Cell.CELL_TYPE_STRING:  
	            value = cell.getStringCellValue().toString();  
	            break;  
	        // 公式类型  
	        case Cell.CELL_TYPE_FORMULA:  
	            //读公式计算值  
	            value = String.valueOf(cell.getNumericCellValue());  
	            if (value.equals("NaN")) {// 如果获取的数据值为非法值,则转换为获取字符串  
	                value = cell.getStringCellValue().toString();  
	            }  
	            break;  
	        // 布尔类型  
	        case Cell.CELL_TYPE_BOOLEAN:  
	            value = " "+ cell.getBooleanCellValue();  
	            break;  
	        // 空值  
	        case Cell.CELL_TYPE_BLANK:   
	            value = "";  
	            break;  
	        // 故障  
	        case Cell.CELL_TYPE_ERROR:   
	            value = "";  
	            break;  
	        default:  
	            value = cell.getStringCellValue().toString();  
	    }  
	    if("null".endsWith(value.trim())){  
	        value="";  
	    }  
	    return value;  
    }  

 

 

 

 

 

Java将Excel表格中数据导入至数据库中的表中         上一节介绍了Java将数据库表中数据导出至Excel表格,那么本节来介绍它的逆过程,也就是将Excel表格中的数据逐行导入数据库中的表中,依然需要使用Apache的POI,上一节已经说过也附了这个jar包的下载地址,这一节就不过多的说,直接讲如何将Excel表格中的数据逐行导入数据库中的表中,还是放代码。 public static void main(String[] arg... 阅读详情

相关推荐

JAVA中用POI实现EXCEL导入数据库

EXCEL导入涉及的注意点: EXCEL导入时去除多余空格 单元格的合并 - 第一步:通过文件路径、文件名读取EXCEL信息 package com.fh.util; import java.io.File; import java.io.FileInputStream; import java.util.ArrayList; import java.util.List; impo...

weixin_39690245的博客 1万+

通过java将Excel表格导入数据到数据库

一、首先。我们使用到的是alibaba的开源框架《EasyExcel》 1、导入相应的依赖包 Maven <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4

languageStudent的博客 3万+

小例子:java利用poi读取excel中数据并导入数据库

问题描述: 文件夹下有若干excel文件,文件名为10.教育局.xls   11.卫生院.xls     ................有很多;中间的汉字为单位名称,需要导入数据库,每个单位名称要有一个单位id匹配;每个excel中有若干个sheet页的名字,每个名字即为科室名称,要导入数据库并有科室id 解决方案: 利用poi即可读取出每个sheet页的名字 读取单位名称: 用Fil

lang的飞起的博客 1万+

Java导入Excel文档到数据库

Java导入Excel到数据库

qq_44717657的博客 8801

java web excel导入数据库

在许多管理系统中,为了满足用户的需求,常常需要从一个上传的excel表格中识别数据,导入数据库。 本文简单介绍了一个Excel2List工具类,把excel各行数据转化成ArrayList对象,从而实现数据库的导入。

Hello, world! 2154

使用Java将Excel数据导入数据库

记得在使用Apache POI和Java JDBC之前,确保已正确设置项目的依赖项,并且已经安装并配置了相应的数据库驱动程序。在Java中,我们可以使用一些库和工具来将Excel数据导入数据库。在本文中,我们将使用Apache POI库来读取Excel文件,以及使用Java JDBC来连接和操作数据库。现在我们已经读取了Excel文件中的数据并建立了数据库连接,接下来我们可以将数据插入数据库表中。在将Excel数据导入数据库之前,我们需要建立与数据库的连接。引入所需的库和依赖项。

TechWhiz的博客 1217

Java将Excel文件的数据导入到数据库

java将excel文件的数据导入到数据库

qq_46552655的博客 4246

Java、SpringBoot实现对Excel内容的读取并将Excel内容导入到数据库中(后端篇)

Java、SpringBoot实现对Excel内容的读取并将Excel内容导入到数据库中(后端篇)

java操作excel将数据导入mysql数据库中

java操作excel将数据导入mysql数据库中 前期准备 架包下载地址: https://mvnrepository.com/artifact/net.sourceforge.jexcelapi/jxl/2.6.12 mysql下载地址: https://dev.mysql.com/downloads/mysql/5.7.html#downloads 将架包添加到资源:build path-...

weixin_43123900的博客 4757

【中文OCR】中文字符图片的分割方法

最近想做一个关于中文OCR的小系列,也是对之前做的东西的一个总结。作为这个系列的第一篇,我觉得还是有必要说一下关于中文字符图片分割的问题。因为现在开源的OCR代码比较多,相对而言对字符图片的分割的方法提的比较少,尤其是中文字符图片的分割还是有一定困难在里面的。 一、普遍使用的切割方法 现在大部分开源项目上用切割方法还是基于水平、垂直投影字符切割方法。 原理比较简单容易理解,也比较容易实现。先...

zhangzm0128 1万+

反射机制——通过反射调用service中方法

需求:现在有一群service接口,有同一个方法名称,内部逻辑除了调用不同的调用自身的方法外其他基本都一致,那现在就需要一个独立的方法来勾勒出这个方法 1.SpringContextUtil package com.XXX.report.util; import org.apache.log4j.Logger; import org.springframework.beans.BeansE...

东天里的冬天 8521

Java实现批量导入Excel表格数据到数据库中

先引入Apache poi的依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency> <dependency>

weixin_44950062的博客 1916

UE4入门实例17(Unreal制作卡通Post Process材质球)

效果展示 #1 创建Post Porcess材质球 #2 编写Shader功能 #3 设置场景区域内风格化渲染 #1 创建Post Porcess材质球 #2 编写Shader功能 创建基础效果 移除现有通道渲染 设置视图渲染范围 #3 设置场景区域内风格化渲染 #4 加群下载Shader源码:284105567 ...

Unity3d 攻城师一枚 1346

Java导入excel到数据库

Java导入excel <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> //...

jia814583973的博客 1894

搞懂 ABAP 里的 Language Settings:登录语言、文本环境语言与 sy-langu 的真实含义

SAP系统中语言设置并非单一字段决定,而是由登录语言(logon language)和文本环境语言(text environment language)共同控制。登录语言在会话期间固定,而文本环境语言可通过SET LOCALE语句修改,影响文本处理、排序、异常显示等行为。开发中需区分两者:使用CL_ABAP_SYST方法获取登录语言,通过sy-langu或GET LOCALE获取当前文本环境语言。语言环境切换应谨慎处理并尽快恢复,避免影响会话中其他程序。在多语言场景下,正确处理语言设置对确保文本相关功能正常

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1307

大厂面试级C#上位机完整项目(终极版):工业级Modbus协议封装 + 标准多线程采集 + 全链路异常处理

(Modbus统一通信接口)、(采集服务接口)职责:定义所有核心操作的标准接口,屏蔽底层差异(RTU/TCP、串口/TCP),面向接口编程的核心体现。新增协议/采集方式,只需实现接口,核心代码零改动。/// 自定义Modbus通信异常类 - 大厂标准,区分通信异常和其他异常/// 包含异常信息+内部异常,可溯源完整错误堆栈,面试必写本次项目是对标大厂工控上位机岗位的终极版实战项目,所有代码、架构、设计都遵循大厂标准,覆盖了面试官考察的所有核心考点✅ 纯手写Modbus协议,体现你对协议底层的吃透。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 858

java excel 导入数据库

 java excel 导入数据库为了把Excel导入数据库写了这个这段程序,大概思路解释一下:因为导入数据库时字段类型和长度、还有字段数都是未知的,所以导入时用了通用的字段类型,在这里用了text,根据需要可以自行定制字段名,类型。这只是个简单的例子如果常常遇到此类问题的我建议写个导入你所想见的表格属性的配置文件(xml或property文件都可以),这样灵活性更强了。还有一种更为好的办法,把要

9229

【2026年华为暑期实习(AI)-6月3日-第一题- 选择题】(题目+思路+Java&C++&Python解析+在线测试)

本文摘要: 本文探讨了深度学习与计算机科学中的多个关键概念和技术,包括CUDA双缓冲技术、神经网络训练问题、优化算法、概率模型、Transformer架构特性、量化技术、损失函数选择等。通过20道选择题和多项选择题,涵盖了梯度消失/爆炸、神经元死亡、牛顿迭代法、朴素贝叶斯分类、Adam优化器、KV Cache压缩等核心知识点。特别关注了大模型训练中的计算效率、数值稳定性问题,以及实际应用场景如客服Agent的记忆机制优化。题目设计既考察基础理论(如概率分布、指数分布特性),又结合前沿技术(如MoE架构、注意

m0_73659489的博客 81

excel导入数据库java_Java实现Excel导入数据库,数据库中的数据导入到Excel

自学资料总结实现的功能:Java实现Excel导入数据库,如果存在就更新数据库中的数据导入到Excel1、添加jxl.jarmysql-connector-java.1.7-bin.jar包到项目的lib目录下­2、Excel文件目录:D://book.xls3、数据库名:javenforexcel4、表名:stu5、编写类:连接mysql的字符串方法、插入的方法、实体类­­表结构如下 :连接数...

weixin_39683241的博客 196

YOLOv8【第十三章:模型压缩与极致优化篇·第4节】LAMP 剪枝算法——无需超参的自动化剪枝策略!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 5644

微信小程序云开发 - 实现商家转账到零钱(微信企业付款到零钱) V3功能流程及完整实例代码,过微信云开发的云函数实现企业付款到零钱(提供详细示例源码纯云函数实现,证书、密钥、签名等各种常见问题解决方案

企业付款到零钱(微信小程序提现功能,提现到零钱)微信小程序-云函数实现微信企业付款到零钱功能,实现微信商户号中的企业付款到零钱的功能,微信小程序+云开发+商家转账至零钱+微信小程序用户提现,使用云开发环境的云函数实现微信小程序的支付功能,微信小程序实现微信企业付款到零钱功能的流程,V3 V2基于微信云开发的商家转账至零钱,小程序云函数企业付款到零钱功能实现,云开发实现微信商户支付企业付款到零钱功能,不用服务器纯云函数实现,详细示例代码demo教程,API证书错误,转账不到账怎么办,密钥生成有误,转账失败,有

🏆 前端领域优质创作者 1万+

Java实现Excel导入数据库,数据库中的数据导入到Excel

1、添加jxl.jar mysql-connector-java.1.7-bin.jar包到项目的lib目录下­。System.err.println("无法连接数据库" );5、编写类:连接mysql的字符串方法、插入的方法、实体类­­。读取Excel表中所有的数据、操作数据(查询、更新)Label(1, 0, "姓名(name)");Label(2, 0, "性别(sex)");Label(3, 0, "薪水(num)");Label(0, 0, "编号(id)");该代码数据库没有关闭,使用需修改。

envy_L的专栏 1378

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

java把excel表的数据导入到mysql数据库

用java把excel表的数据导入到数据库(可能有些类型还没考虑完全,抽空写的) ———————————————————————————————————————————————————————————— 简单的思路 一、先获取数据库表的字段名、主键名, 二、读取excel文件的数据(注意:excel文件的数据表字段的顺序与该表的顺序一致,有空再做导出) 三、拼接sql 上代码: 一、先连接数据库 ...

weixin_38264372的博客 4445

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

java 导入excel到数据库_java中怎么把excel导入数据库

展开全部1、加入依赖的jar文件:引用:*mysql的jar文件*Spring_HOME/lib/poi/*.jar2、编写数据库链接类packagecom.zzg.db;importjava.sql.Connection;importjava.sql.DriverManager;publicclassDbUtils{privatestaticConnectionconn;sta...

weixin_39683978的博客 169

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: java判断上传文件类型(笔记)
下一篇: java 计算工作时间除去节假日,双休日
旋转的钢笔
博客等级 码龄11年 24粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值