Java--导入Excel

EasyUi通过OCUpload上传及POI上传 实现导入xls表格功能 第七步:修改jsp页面,如果上传成功提示用户上传成功、如果失败就提示上传失败。第六步:AreaDao创建(本测试案例用到的持久层是JPA)第二步:提供一个上传按钮(本案例用的EasyUi框架)第五步:创建service层的save方法实现保存。//跳过本次循环,进入下一次循环。//2.使用workbook获取某个sheet页。//1.使用workbook获取整个excel。//3.遍历sheet页获取row行。//4.使用row获取cell单元格。//5.创建area封装数据。//3.1跳过第一行标题行。 阅读详情

上一篇说到导出Excel,如果数据填充没有问题,就可以将文件导入到系统中了。

导入Excel调试通以前有很多坑,通了以后就觉得没什么了。

废话不多,直接上代码

JSP

<div style="margin-top: 60px; margin-left: 30px;">
      <input id="excelFile" name="excelFile" class="easyui-filebox" style="width: 60%" data-options="prompt:'选择Excel文件...'">
       <a href="#" class="easyui-linkbutton" style="" onclick="uploadExcel()">导入</a>
</div>

JS

function uploadExcel() {
		
	// 得到上传文件的全路径
	var fileName = $('#excelFile').filebox('getValue')

	// 进行基本校验
	if (fileName == "") {
		alert("请选择上传文件!");
	} else {
		// 对文件格式进行校验
		var d1 = /\.[^\.]+$/.exec(fileName);
		if (d1 == ".xls") {

			$('#Manage').form('submit', {
				url : 'trainingPrograms/import',
				onSubmit : function() {
					return $(this).form('validate');
				},
				success : function(result) {
					// var result = eval('(' + result +
					// ')');"${pageContext.request.contextPath}/trainingPrograms/import"
					var result = eval('(' + result + ')');
					if (result == "error") {
						$.messager.alert("提示", "导入失败!", "info");
						$('#trainingProgramsImport').dialog('close'); // close
																		// the
						// dialog
						$('#dg').datagrid('reload'); // reload the Teacher
						// data
					} else if(result == "success") {
						$.messager.alert("提示", "导入成功!", "info");
						$('#trainingProgramsImport').dialog('close'); // close
																		// the
						// dialog
						$('#dg').datagrid('reload'); // reload the Teacher
						// data
					}else if (result == "chongfu"){
						$.messager.alert("提示", "导入失败,Excel中的数据已部分或全部导入!", "info");
						$('#trainingProgramsImport').dialog('close'); 
						$('#dg').datagrid('reload'); 
					}
						
				}
			});

		} else {
			alert("请选择xls格式文件!");
			$('#uploadExcel').filebox('setValue', '');
		}
	}
}

从页面被调用控制器

controller

	@RequestMapping(value = "/trainingPrograms/import", method = RequestMethod.POST)
	public void importTrainingProgram(HttpServletResponse response,
			HttpServletRequest request) throws Exception {
		String dataBaseName=(String) request.getSession().getAttribute (CloudContext.DatabaseName)+"_basic";
		// 创建一个通用的多部分解析器
		CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
				request.getSession().getServletContext());
		InputStream inExcelFile = null;
		// 判断 request 是否有文件上传,即多部分请求
		if (multipartResolver.isMultipart(request)) {
			// 转换成多部分request
			MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;

			// 取得request中的所有文件名
			Iterator<String> iter = multiRequest.getFileNames();
			while (iter.hasNext()) {
				// 记录上传过程起始时的时间,用来计算上传时间
				int pre = (int) System.currentTimeMillis();
				// 取得上传文件
				MultipartFile file = multiRequest.getFile(iter.next());
				inExcelFile = file.getInputStream();
			}
		}

		// 创建一个list 用来存储excel文件中的内容
		List list = new ArrayList();
		
		Workbook rwb = null;
		Cell cell = null;

		String result = "error";

		// 获取Excel文件对象
		rwb = Workbook.getWorkbook(inExcelFile);

		// 获取文件的指定工作表 默认的第一个
		Sheet sheet = rwb.getSheet(0);
		
		// 行数(表头的目录不需要,从1开始)
		for (int i = 0; i < sheet.getRows(); i++) {

			// 创建一个数组 用来存储每一列的值
			String[] str = new String[sheet.getColumns()];

			// 列数
			for (int j = 0; j < sheet.getColumns(); j++) {

				// 获取第i行,第j列的值
				cell = sheet.getCell(j, i);
				str[j] = cell.getContents();

			}
			list.add(str);
		}
		
		//构造实体list
		List<CourseInfo> courseinfolist = new ArrayList<CourseInfo>();
		List<TraningProgramNow> trainingprogramlist = new ArrayList<TraningProgramNow>();	
		/*
		//查出来的是专业类型,比如"专业选修课"之类的----2016年9月23日20:19:21
		List<CourseType> coursetypeAbtlist = editTrainingProgramBean
				.queryAllCoursesType(dataBaseName);

		// 查询nodelevel表中pId为null的学校id,然后根据这个学校id查询pId为这个id的学院类型id
		String academyId = editTrainingProgramBean
				.findAcademyTypeid(dataBaseName);
		
		// 根据学院类型id查询专业类型id
		String inistutionId = editTrainingProgramBean.findInisutionTypeid(
				academyId,  dataBaseName);

		//查询所有二级学院----2016年9月23日20:20:27
		List<Institution> academyList = editTrainingProgramBean
				.queryAllacademy(academyId, dataBaseName);
		
		//显示八个学期----2016年9月23日20:22:15
		List<DictionaryNow> tremList = editTrainingProgramBean
				.queryTremList("学期", dataBaseName);
		
		//显示两个考核形式,考查还是考试--2016年9月23日20:22:45--
		List<DictionaryNow> examList = editTrainingProgramBean
				.queryTremList("考核形式",  dataBaseName);
		
		//查询所有专业----2016年9月23日20:23:26
		List<Institution> institutionList = editTrainingProgramBean
				.queryAllacademy(inistutionId,  dataBaseName);
		
		//查询数据库中已有的全部课程--2016年9月23日20:25:02--
		List<CourseInfo> courselist = editTrainingProgramBean
				.queryAllCourseInfo(dataBaseName);
		*/
			
		a:   //用于跳出循环
		if (list.size() > 0 && list != null) {		
			b:   //用于跳出循环
			//循环list中的每条数据,也就是excel中的每条数据
			for (int i = 1; i < list.size(); i++) {
				String[] str = (String[]) list.get(i);  //将List (Excel) 中的第一条记录存入String数组
				if (list.get(i) != null) {
					
					//在导入之前,先判断是否是重复导入,也就是说,判断是否之前已经导入过相同的数据----2016年9月23日16:51:29
					//如果有重复数据,则提示给用户
					
					//1.查询数据库中已有的数据
					//返回的list有三个值:课程id,学期名,专业名
					
					/*List listDB = new ArrayList();
					listDB = editTrainingProgramBean.selectTrainingPrograms(dataBaseName);
					
					//2.一条条遍历将要导入数据库的list,和数据库中的每条数据做比较
					c:
					for (int j = 0; j < listDB.size(); j++) { 
						
						Object[] strDB = (Object[]) listDB.get(j);
						
						//比较课程编码、开课学期、培养计划所属专业
						//3.拿list中的一条数据和数据库中的每条数据listDB做对比
						if(strDB[0].toString().equals(str[1]) && 
						   strDB[1].toString().equals(str[9]) && 
						   strDB[2].toString().equals(str[11])){
						result=INFO;
						logger.info("Excel中有重复数据,导入失败");
						break a;						
						}
					}*/
										
					//构造实体对象
					Institution academy = new Institution();
					Institution institution = new Institution();
					DictionaryNow trem = new DictionaryNow();
					DictionaryNow exam = new DictionaryNow();
					CourseType coursetype = new CourseType();
					CourseInfo courseinfo = new CourseInfo();
					TraningProgramNow trainingprogram = new TraningProgramNow();		
					
				
					// 课程类型
     				coursetype.setCourseTypeName(str[0]); // CourseTypeName
					coursetype = findremoveDuplicateAbtCourseType(coursetype,
							coursetypeAbtlist);

					// 学校,是哪所大学,比如清华、北大、北理工……
					academy.setInstitutionName(str[7]);
					academy = findremoveDuplicateAbtInstitution(academy,
							academyList);

					// 专业,比如 生物技术,食品工程,商务英语……
					institution.setInstitutionName(str[11]);
					institution = findremoveDuplicateAbtInstitution(institution,
							institutionList);

					// 学期
					trem.setContent(str[9]);
					trem.setType("学期");
					trem = findremoveDuplicateAbtDictionaryNow(trem, tremList);

					// 考核形式
     				exam.setContent(str[8]);
					exam.setType("考核形式");
					exam = findremoveDuplicateAbtDictionaryNow(exam, examList);

					// 课程
					//查询公选的课程性质id  (str[16]的值是 "自然科学" 或 "人文社科" 或 "社会体育")
					String courseNatureId = editTrainingProgramBean.queryCourseNatureId(dataBaseName, str[16]);
					courseinfo.setCourseCode(str[1]);
					courseinfo.setCourseName(str[2]); // CourseInfoName
					courseinfo.setClassHour(str[3]); // classHour
					courseinfo.setClassPoint(str[4]); // classPoint
					courseinfo.setCourseTypeId(coursetype.getId()); // CourseTypeID
					courseinfo.setTheoryClassHour(str[5]); // TheoryClassHour
					courseinfo.setPracticeClassHour(str[6]); // PracticeClassHour
					courseinfo.setCourseNatureId(courseNatureId);
					courseinfo.setInstitutionId(academy.getId()); // institutionId
					courseinfo.setDataBaseName(dataBaseName);
					courseinfo = findremoveDuplicateAbtCourseInfo(courseinfo,
							courselist);
					
					// 培养计划
					String uuid = UUID.randomUUID().toString();
					trainingprogram.setId(uuid);
					trainingprogram.setCourseId(courseinfo.getId());
					trainingprogram.setCourseTypeID(coursetype.getId());
					trainingprogram.setPeriodId(trem.getId());
					trainingprogram.setExamOrNot(exam.getId());
					trainingprogram.setInstitutionId(institution.getId());
					trainingprogram.setWeekClass(str[10]);
					trainingprogram.setBeginweek(str[13]);
					trainingprogram.setEndweek(str[14]);
					trainingprogram.setOddWeekOrNot(str[15]);
					trainingprogram.setRemark(str[17]);	
					trainingprogram.setDataBaseName(dataBaseName);
					
					//将excel中的每条记录都保存到对应的实体list中
					courseinfolist.add(courseinfo);
					trainingprogramlist.add(trainingprogram);					
				}
			}		
		
			// 给courseinfo去重
			courseinfolist = queryremoveDuplicateCourseInfo(courseinfolist);
			
			Boolean it = editTrainingProgramBean.AddTrainProgramDetaillist(
					dataBaseName,courseinfolist,trainingprogramlist);
			if (it) {
				result = SUCCESS;
			}
		}
		JacksonJsonUntil jacksonJsonUntil = new JacksonJsonUntil();
		jacksonJsonUntil.beanToJson(response, result);
	}

这样调用就可以验证Excel数据是否重复,并且经过循环,将其中数据循环存入list传到后端,存储进数据库。

补充:

在部署的时候,需要在jboss中引入两个用于上传的jar包:commons-fileupload-1.3.1.jar和commons-io-2.2.jar。

结果:



一句话点评:前天看到家族群里分享的一篇文章,其中有句话:在你越艰难的时候,就是你收获最大的时候。

java导入Excel表格数据 一、思路是这样的: 1.先做好一个Excel模板供用户下载,例如下图 2.用户使用模板填好数据,上传Excel文件到web后台,后台接收文件。 3.把用户上传的文件进行校验文件格式、字段是否符合要求,符合要求则解析数据,保存到数据库中,不符合要求则提示; 二、代码实现 1.要导入的数据JAVA对象如下: public clas... 阅读详情

相关推荐

JAVA导入带有图片的excel

需求说明 项目中需要将企业已有员工信息通过excel的形式导入到系统中,方便企业快速便捷使用系统 导入依赖jar <!--导入Excel--> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId&gt...

w_w_w10_21的博客 1万+

easyui之excel导入数据

前端部分代码: /** * 导入 */ $('a[type="btn-import"]').bind("click",function(){ $('#importDialog').dialog({ title: '导入文件', ...

qq_40263927的博客 8232

java 动态导入excel_java实现导入导出excel数据

项目需要,要实现一个导入导出excel的功能,于是,任务驱动着我学习到了POI和JXL这2个java操作Excel的插件。一、POI和JXL介绍1、POI:是对所有office资源进行读写的一套工具包、属于apache开源组织。poi操作excel:poi是把整个文件的属性都封装在HSSFWorkbook 中;通过HSSFWorkbook来操作单个工作薄。然后通过工作薄来操作行;在通过行来操控单元...

weixin_31482671的博客 1906

SpringBoot的easyui实现导入和导出功能到excel

HTML代码 //工具栏 var toolbar = [ { { id : 'button-import', text : '导入', iconCls : 'icon-redo' },{ id : 'button-export', text : '导出', iconCls : 'icon-un...

ws826354136的博客 2526

用easyui-filebox上传Excel文件(ASP.NET MVC)

用easyui-filebox上传Excel文件(ASP.NET MVC)。包括前端html代码和服务器端的C#代码。我写的,亲测可用。

ASP读取Excel实例

ASP读取Excel实例,可以将一个xls文件导入数据库。

Spring结合EasyUI导入和导出excel

转自:https://blog.youkuaiyun.com/dearfinance/article/details/57402412 在自己使用easyUi做excel导入导出功能时,结合使用jexcelapi的API做的excel导入导出功能 在pom.xml文件加入 <!-- 上传组件包 --> <dependency> &l...

qq_36688928的博客 2330

jeasyui的dataGrid的打印和导出,jeasyui报表 table转成excel 实例下载

如题,项目要用到jeasyui,所以必须要下载它的demo,获取相应的js,css等等的文件 jeasyui的下载地址:http://www.jeasyui.com/download/index.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <link href="easyui/themes/default/easyui.css" rel="stylesheet" type="text/css" /> <link href="easyui/themes/icon.css" rel="stylesheet" type="text/css" /> <link href="easyui/demo.css" rel="stylesheet" type="text/css" /> <script src="easyui/jquery.min.js" type="text/javascript"></script> <script src="easyui/jquery.easyui.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { $("#tab").datagrid({ // width: 600, //宽度 height: 400, //高度 singleSelect: true, //选中一行的设置 fitColumns:true, url: "EditorUserHandler.ashx", //请求路径 title: "用户信息", //标题 iconCls: "icon-add", //图标 // collapsible: true, //隐藏按钮 //冻结列 // frozenColumns: [[{ field: "chk", "checkbox": true}]], //复选框 //列 rownumbers: false, //传输参数 queryParams: { "action": "query" }, pagination: true, toolbar: "#tool" }); $("#tab").datagrid('getPager').pagination({ beforePageText: "第", afterPageText: "页", displayMsg: "当前 {from} - {to}条数据 共{total} 条数据", pageSize: 10, pageList: [5, 10, 15, 20, 30] }); }) </script> <!--//打印--> <script type="text/javascript"> function CreateFormPage(strPrintName, printDatagrid) { var tableString = '<div><table width="100%"><tr style="text-align:center;"><td colspan="2" style="font-size:24px; font-weight:bold;"><span style="text-decoration:underline;"> </span>年<span style="text-decoration:underline;"> </span>半年广东省房屋市政工程安全生产文明施工示范工地申报项目汇总表</td></tr><tr><td style="text-align:left;">地区(部门)公 章: </td><td style="text-align:right;">报送时间: 年 月 日</td></tr></table> <table cellspacing="0" class="pb">'; var frozenColumns = printDatagrid.datagrid("options").frozenColumns; // 得到frozenColumns对象 var columns = printDatagrid.datagrid("options").columns; // 得到columns对象 var nameList = ''; // 载入title if (typeof columns != 'undefined' && columns != '') { $(columns).each(function (index) { tableString += '\n<tr>'; if (typeof frozenColumns != 'undefined' && typeof frozenColumns[index] != 'undefined') { for (var i = 0; i < frozenColumns[index].length; ++i) { if (!frozenColumns[index][i].hidden) { tableString += '\n<th width="' + frozenColumns[index][i].width + '"'; if (typeof frozenColumns[index][i].rowspan != 'undefined' && frozenColumns[index][i].rowspan > 1) { tableString += ' rowspan="' + frozenColumns[index][i].rowspan + '"'; } if (typeof frozenColumns[index][i].colspan != 'undefined' && frozenColumns[index][i].colspan > 1) { tableString += ' colspan="' + frozenColumns[index][i].colspan + '"'; } if (typeof frozenColumns[index][i].field != 'undefined' && frozenColumns[index][i].field != '') { nameList += ',{"f":"' + frozenColumns[index][i].field + '", "a":"' + frozenColumns[index][i].align + '"}'; } tableString += '>' + frozenColumns[0][i].title + '</th>'; } } } for (var i = 0; i < columns[index].length; ++i) { if (!columns[index][i].hidden) { tableString += '\n<th width="' + columns[index][i].width + '"'; if (typeof columns[index][i].rowspan != 'undefined' && columns[index][i].rowspan > 1) { tableString += ' rowspan="' + columns[index][i].rowspan + '"'; } if (typeof columns[index][i].colspan != 'undefined' && columns[index][i].colspan > 1) { tableString += ' colspan="' + columns[index][i].colspan + '"'; } if (typeof columns[index][i].field != 'undefined' && columns[index][i].field != '') { nameList += ',{"f":"' + columns[index][i].field + '", "a":"' + columns[index][i].align + '"}'; } tableString += '>' + columns[index][i].title + '</th>'; } } tableString += '\n</tr>'; }); } // 载入内容 var rows = printDatagrid.datagrid("getRows"); // 这段代码是获取当前页的所有行 var nl = eval('([' + nameList.substring(1) + '])'); for (var i = 0; i < rows.length; ++i) { tableString += '\n<tr>'; $(nl).each(function (j) { var e = nl[j].f.lastIndexOf('_0'); tableString += '\n<td'; if (nl[j].a != 'undefined' && nl[j].a != '') { tableString += ' style="text-align:' + nl[j].a + ';"'; } tableString += '>'; if (e + 2 == nl[j].f.length) { tableString += rows[i][nl[j].f.substring(0, e)]; } else tableString += rows[i][nl[j].f]; tableString += '</td>'; }); tableString += '\n</tr>'; } tableString += '\n</table></div>'; window.showModalDialog("/print.htm", tableString, "location:No;status:No;help:No;dialogWidth:800px;dialogHeight:600px;scroll:auto;"); } </script> <!--//导出--> <script type="text/javascript"> function ChangeToTable(printDatagrid) { var tableString = '<table cellspacing="0" class="pb">'; var frozenColumns = printDatagrid.datagrid("options").frozenColumns; // 得到frozenColumns对象 var columns = printDatagrid.datagrid("options").columns; // 得到columns对象 var nameList = new Array(); // 载入title if (typeof columns != 'undefined' && columns != '') { $(columns).each(function (index) { tableString += '\n<tr>'; if (typeof frozenColumns != 'undefined' && typeof frozenColumns[index] != 'undefined') { for (var i = 0; i < frozenColumns[index].length; ++i) { if (!frozenColumns[index][i].hidden) { tableString += '\n<th width="' + frozenColumns[index][i].width + '"'; if (typeof frozenColumns[index][i].rowspan != 'undefined' && frozenColumns[index][i].rowspan > 1) { tableString += ' rowspan="' + frozenColumns[index][i].rowspan + '"'; } if (typeof frozenColumns[index][i].colspan != 'undefined' && frozenColumns[index][i].colspan > 1) { tableString += ' colspan="' + frozenColumns[index][i].colspan + '"'; } if (typeof frozenColumns[index][i].field != 'undefined' && frozenColumns[index][i].field != '') { nameList.push(frozenColumns[index][i]); } tableString += '>' + frozenColumns[0][i].title + '</th>'; } } } for (var i = 0; i < columns[index].length; ++i) { if (!columns[index][i].hidden) { tableString += '\n<th width="' + columns[index][i].width + '"'; if (typeof columns[index][i].rowspan != 'undefined' && columns[index][i].rowspan > 1) { tableString += ' rowspan="' + columns[index][i].rowspan + '"'; } if (typeof columns[index][i].colspan != 'undefined' && columns[index][i].colspan > 1) { tableString += ' colspan="' + columns[index][i].colspan + '"'; } if (typeof columns[index][i].field != 'undefined' && columns[index][i].field != '') { nameList.push(columns[index][i]); } tableString += '>' + columns[index][i].title + '</th>'; } } tableString += '\n</tr>'; }); } // 载入内容 var rows = printDatagrid.datagrid("getRows"); // 这段代码是获取当前页的所有行 for (var i = 0; i < rows.length; ++i) { tableString += '\n<tr>'; for (var j = 0; j < nameList.length; ++j) { var e = nameList[j].field.lastIndexOf('_0'); tableString += '\n<td'; if (nameList[j].align != 'undefined' && nameList[j].align != '') { tableString += ' style="text-align:' + nameList[j].align + ';"'; } tableString += '>'; if (e + 2 == nameList[j].field.length) { tableString += rows[i][nameList[j].field.substring(0, e)]; } else tableString += rows[i][nameList[j].field]; tableString += '</td>'; } tableString += '\n</tr>'; } tableString += '\n</table>'; return tableString; } function Export(strXlsName, exportGrid) { var f = $('<form action="export.aspx" method="post" id="fm1"></form>'); var i = $('<input type="hidden" id="txtContent" name="txtContent" />'); var l = $('<input type="hidden" id="txtName" name="txtName" />'); i.val(ChangeToTable(exportGrid)); i.appendTo(f); l.val(strXlsName); l.appendTo(f); f.appendTo(document.body).submit(); try { document.body.removeChild(f); } catch (e) { } } </script> </head> <body> <a href="javascript:void(0);" onclick="CreateFormPage('打印测试', $('#tab'));">打印</a> <a href="javascript:void(0);" onclick="Export('导出excel', $('#tab'));">导出</a> <table id="tab"> <thead> <tr> <th data-options="field:'flid',width:80" rowspan="2">编号</th> <th data-options="field:'flname',width:100" rowspan="2">姓名</th> <th colspan="3">详细信息</th> <th colspan="2">登录信息</th> </tr> <tr> <th data-options="field:'fladdress',width:80,align:'right'">地址</th> <th data-options="field:'flphone',width:80,align:'right'">电话</th> <th data-options="field:'flemail',width:240">邮箱</th> <th data-options="field:'flloginname',width:60,align:'center'">登录名</th> <th data-options="field:'flloginpwd',width:60,align:'center'">密码</th> </tr> </thead></table> <div id="tool"> <table border="0" cellspacing="0" cellpadding="0" width="100%" class="easyui-datagrid"> <!--<tr> <td style=" padding-left:2px"> <a href="#" class="easyui-linkbutton" id="id_add" iconcls="icon-add" plain="true" onclick="add_dg();" >添加</a> <a href="#" class="easyui-linkbutton" id="id_edit" iconCls="icon-edit" plain="true" onclick="edit_dg();">修改</a> <a href="#" class="easyui-linkbutton" id="id_cancel " onclick="delete_dg();" iconcls="icon-cancel" plain="true">删除</a> </td> </tr>--> </table> </div> <br /> <div id="dd_dg" style=" display:none"> <form id="fm_dg"> 编号:<input id="flid" name="flid" class="easyui-numberbox" type="text" required="true" missingMessage="请输入编号" /> <br /> 姓名:<input id="flname" name="flname" class="easyui-validatebox" required="true" missingMessage="请输入姓名"/> <br /> 地址:<input id="fladdress" name="fladdress" class="easyui-validatebox" type="text" required="true" missingMessage="请输入地址" /> <br /> 电话:<input id="flphone" name="flphone" class="easyui-validatebox" type="text" required="true" missingMessage="请输入电话" /> <br /> 邮箱:<input id="flMail" name="flMail" class="easyui-validatebox" type="text" validType="email" required="true" missingMessage="请输入邮箱" /> <br /> 登录名:<input id="flloginname" name="flloginname" class="easyui-validatebox" type="text" required="true" missingMessage="请输入登录名" /> <br /> 密码:<input type="password" id="flloginpwd" name="flloginpwd" class="easyui-validatebox" required="true" missingMessage="请输入密码" /> <br /> </form> </div> </body> </html>

java 读取excel数据 poi导入excel 数据 java导入excel表格 java import excel

java 读取excel数据 poi导入excel 数据 java实现导入excel数据 一、说明 1、在实际开发中,可能有需求需要将excel导入到业务系统中,具体实现可以使用Apache poi 来实现。 2、依赖pom如下: <dependency> <groupId>org.apache.poi</gro......

HaHa_Sir的博客 4105

springMVC+Easyui+Excel导入导出+WebService+Dom4j

这是一个用mysql数据库做的SpringMVC,前台页面用的是EasyUI,对应两个项目用的是WebService相互调用。 实现功能:增删改查,Excel的导入导出,读取Excel文件,并在控制台打印。利用Dom4j 解析XML文件,并且实现对XML 文件的增删改查。

easyui+数据导出为Excel

easyui框架下,进行纯前端的数据导出,存储为Excel文件。删除了许多未用到的东西,比较简洁,js与css需要使用自己的。主要需要xlsx.full.min.js。

Java实现Excel导入导出操作详解

java 基于poi的 excel导入导出

acoolper的专栏 2万+

java把excel表格数据导入数据库

java把excel表格数据导入数据库

Java带图片的excel数据导入

Java带图片的EXCEL数据导入,导入excel中的图片

Mou_O的博客 6645

基于STM32与毫米波雷达的非接触式睡眠监测系统

物联网和嵌入式系统技术正在推动医疗健康设备的智能化发展。通过传感器网络采集生理信号,结合信号处理算法实现健康监测已成为主流技术方案。毫米波雷达凭借其非接触检测特性,在呼吸、心率等生命体征监测中展现出独特优势。STM32系列MCU凭借丰富外设和低功耗特性,成为医疗级嵌入式设备的首选平台。本系统整合60GHz毫米波雷达、红外测温与无线传输模块,构建了完整的睡眠质量评估解决方案,其硬件架构设计、信号处理算法和低功耗优化策略对可穿戴医疗设备开发具有参考价值。

weixin_36369848的博客 612

【小白指南】如何将deepseek引入WPS\Word\Excel中去?

如何将deepseek引入WPS\Word\Excel中去?纯小白都能看的懂,一步步操作就能行

2503_90498422的博客 1万+

java实现excel的导入

package com.nchu.wechatOrder.controller;   import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import org.springframework.stereotype.Controller; import o...

hello world 4万+

地瓜派RDK X5部署YOLOv11n避坑指南:从Softmax瓶颈到BPU加速的实战解析

本文详细解析了在地瓜派RDK X5开发板上部署YOLOv11n模型时,从性能暴跌到成功优化的全过程。核心在于通过配置`node_info`将模型中的Softmax算子强制在BPU上以int16精度运行,解决了因算子被分配到CPU导致的严重性能瓶颈。实战部署后,模型推理延迟从126ms降至10.8ms,FPS从7.9提升至92.3,实现了显著的性能优化。

beta5的博客 865

java导入excel中的附件,java的导入excle/java中如何导入Excel,并给出模板

java中如何导入Excel,并给出模板一般使用jxl或poi需要相关jarpoi的直接去Apache去下载就行了下面写意个jxl子String fi = "Excel文件路径";//设置字WorkbookSettings workbooksetting = new WorkbookSettings();workbooksetting.setEncoding("GBK");//构造Workbook...

weixin_39860636的博客 1559

COMSOL电弧放电仿真:四场耦合与磁流体建模实战指南

多物理场耦合仿真是现代工程中模拟复杂物理过程的重要手段。电弧本质上是电场、磁场、流场与温度场四场相互耦合的非线性系统,其行为由磁流体力学(MHD)方程描述。通过COMSOL等工具构建电弧模型,可准确预测温度分布、流场结构和电极烧蚀,为开关电器设计、等离子体应用等提供数据支撑。在高压电器开断、电弧切割、激光打孔等工程问题中,高效求解MHD耦合模型是关键。然而,电弧仿真涉及物性参数强非线性、边界条件设置、求解器配置以及移动网格处理等挑战。以二维轴对称电弧模型为例,系统梳理磁流体方程落地、多物理场耦合节点配置、收

weixin_30047059的博客 135

【Unity Shader】Special Effects(十二)Glow 外发光(UI)

Properties_GlowColor ("外发光颜色", Color) = (0, 0, 0, 1)_GlowIntensity("外发光强度", Range(0, 1)) = 1参数详解:_GlowColor:外发光颜色,指定外发光的显示颜色。_GlowIntensity:外发光强度,指定外发光的显示强度,0为不可见,1为最强强度。

神码编程 931

java excel导入校验_excel导入前校验

问题描述:遇到客户提出过问题,能否在导入前对导入的excel内容进行校验,满足条件后才能导入到报表中。解决思路:在导入excel中首先要将excel的数据读入到报表文件中的excelReport进行取值校验即可。操作步骤:1,取report4.jar 和 quieeReport4.tld(分别包含有AbstractExcelListener类和importExcelListener标签属性) 分别...

weixin_42299150的博客 4072

uniapp [全端兼容] - 详细实现用户电子签名 “逐字校验“ 将姓名按字拆开分别手写签署签字,把客户名字自动拆成单独的文字并由用户逐个依次签名与汉字笔画校验,支持汉字格、田字格、米字格、方格等!

uniapp,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,手写签名,电子签署,逐个字挨着写,写名字,将客户姓名分成单独的文字并依次手写,在田字格里写名字,米字格,方格,合同,书写轨迹,验证手写的文字是否正确,如何在uni-app做姓名拆分成独立的文字后手写每一个字,校验正确性,画板,汉字生成在米字格里并且让用户去写,如何画一个汉字田字格,vue把姓名拆分单独写签名,文字,拆掉,中文汉字网格,一个字一个字签名,一次只签名一个文字,判断签名的文字笔画是否正确,Un

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

java导入excel怎么统计导入成功条数_Java Excel导入导出(实战)

一、批量导入(将excel文件转成list)1. 前台代码逻辑1)首先在html页面加入下面的代码(可以忽略界面的样式)注:往左滑动代码即可看到全部代码!!!for= <img id="uploadbtn" src="../img/upload-on.png" > <input type="file" name="" id="uploadFileWhit...

weixin_40002611的博客 1656

从“能跑”到“好用”:一名 Python 开发者的工程化进阶之路【Python心得篇】

Python 早已不只是写脚本、跑数据的工具。后端服务AI Agent 编排层自动化平台核心语言数据与业务之间的“中枢层”区别只在于:你是用脚本方式,还是工程方式在写。如果你已经能写“能跑的 Python”,下一步,就是让它长期可跑、稳定可演进。Python 的真正价值不在于“写得快”,而在于能否支撑持续演进的工程实践。当代码从一次性脚本走向长期运行的系统,开发者必须从结构设计、职责拆分、性能意识和类型约束等方面进行系统性思考。

博客 1546

麻辣香锅病毒分析

Spicy Hot Pot浏览器劫持病毒(麻辣香锅病毒)从2020年初被安全公司监测到,因其病毒模块带有MLXG_KM被安全行业代称麻辣香锅病毒。目前通过各种激活工具传播, 包括暴风激活、小马激活和KMS激活等诸多工具,疑似与下载站进行合作推广此类激活工具。Spicy Hot Pot 是一个浏览器劫持 Rootkit,它会将用户的主页更改为指向恶意软件操作员控制的页面,此外还会将内存转储从机器上传到预定义的服务器,并结合本地更新功能以确保其保持更新。通常浏览器劫持者会通过更改用户主页的恶意可执行文件或注册表

不忘初心,护天下安全! 4788
上一篇: java --导出Excel
下一篇: 手动删除Eclipse中SVN账号
mayfla
博客等级 码龄14年 312粉丝 191原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值