这两天用jxl简单的实现了Excel文件的导入导出,下面是我的一些总结(当然有很多是参照别人的代码)。
jsp页面代码:
/Excel文件导入到数据库中
function importEmp(){
//检验导入的文件是否为Excel文件
var excelPath = document.getElementById("excelPath").value;
if(excelPath == null || excelPath == ''){
alert("请选择要上传的Excel文件");
return;
}else{
var fileExtend = excelPath.substring(excelPath.lastIndexOf('.')).toLowerCase();
if(fileExtend == '.xls'){
}else{
alert("文件格式需为'.xls'格式");
return;
}
}
//提交表单
document.getElementById("empForm").action="<%=request.getContextPath()%>/EmpExcel.action.EmpExcelAction.do?method=importEmployeeInfos";
document.getElementById("empForm").submit();
}
<input type="file" id="excelPath" name="excelPath"/>
<input type="button" value="导入Excel" onclick="importEmp()"/>
action:
/**
* Excel中的数据导入到数据库中(Excel中的字段已限定)
* @param mapping
* @param form
* @param request
* @param response
* @return
* @throws Exception
*/
public ActionForward importEmployeeInfos(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
logger.debug(">>>importEmployeeInfos()");
//从页面接收参数:文件的路径
String excelPath = request.getParameter("excelPath");
//输入流
InputStream fis = new FileInputStream(excelPath);
//得到解析Excel的实体集合
List<EmployeeInfo> infos = ImportEmployee.importEmployee(fis);
//遍历解析Excel的实体集合
for(EmployeeInfo info:infos) {
//判断员工编号是否存在(存在:做修改操作;不存在:做新增操作)
EmployeeInfo info1 = this.selectEmpByEmpNum(info.getEmployeeNumber());
if(info1 == null) {
//把实体新加到数据库中
this.service.addEmployeeInfo(info);
}else{
//把personId封装到实体
info.setPersonId(info1.getPersonId());
//更新实体
this.updatEmployeeInfo(info);
}
}
//关闭流
fis.close();
logger.debug("<<<importEmployeeInfos()");
return this.findEmployeeInfos(mapping, form, request, response);
}
/**
* 根据员工编号查找一个员工实体
* @param employeeNumber 员工编号
* @return 实体
*/
private EmployeeInfo selectEmpByEmpNum(String employeeNumber) {
logger.debug(">>>selectEmpByEmpNum(String employeeNumber)");
EmployeeInfo employeeInfo = new EmployeeInfo();
employeeInfo.setEmployeeNumber(employeeNumber);
EmployeeInfo info =this.service.selectEmployeeInfoByEmpNum(employeeInfo);
logger.debug("<<<selectEmpByEmpNum(String employeeNumber)");
return info;
}
/**
* 更新一条员工信息
* @param employeeInfo 已封装的实体
*
*/
private void updatEmployeeInfo(EmployeeInfo employeeInfo) {
logger.debug(">>>selectEmpByEmpNum(String employeeNumber)");
this.service.updateEmployeeInfo(employeeInfo);
logger.debug(">>>selectEmpByEmpNum(String employeeNumber)");
}
导入类:
public class ImportEmployee {
/**
* 解析Excel文件中的数据并把每行数据封装成一个实体
* @param fis 文件输入流
* @return List<EmployeeInfo> Excel中数据封装实体的集合
*/
public static List<EmployeeInfo> importEmployee(InputStream fis) {
List<EmployeeInfo> infos = new ArrayList<EmployeeInfo>();
EmployeeInfo employeeInfo = null;
try {
//打开文件
Workbook book = Workbook.getWorkbook(fis);
//得到第一个工作表对象
Sheet sheet = book.getSheet(0);
//得到第一个工作表中的总行数
int rowCount = sheet.getRows();
//日期格式化
DateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
//循环取出Excel中的内容
for (int i = 1; i < rowCount; i++) {
employeeInfo = new EmployeeInfo();
Cell[] cells = sheet.getRow(i);
employeeInfo.setOrgId(Long.parseLong(cells[0].getContents()));
employeeInfo.setEmployeeNumber(cells[1].getContents().toString());
employeeInfo.setFullName(cells[2].getContents().toString());
employeeInfo.setSex(cells[3].getContents().toString());
employeeInfo.setDateOfBirth(new Date());
employeeInfo.setTownOfBirth(cells[5].getContents().toString());
employeeInfo.setNationalIdentifier(cells[6].getContents().toString());
infos.add(employeeInfo);
}
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return infos;
}
}
写的比较简单,如有错误,希望讨论和指正。
分享到:
相关推荐
Acronis Backup:Acronis备份策略设计原理.docx
phpEasyVCS-2.0.zip
2023-04-06-项目笔记-第三百五十一阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.349局变量的作用域_349- 2024-12-18
CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
用户管理: 能够完成用户基本信息录入的注册和用户基本信息的修改。 管理员管理: 能够完成管理员对网站的商品信息管理(商品添加、商品审查)、会员管理(会员审查)、网站信息管理(新闻添加、修改删除、公告设置),以及常规设置(广告添加,友情链接)的功能。 搜索功能: 能过电子商品的名称进行搜索。 查询功能: 能够通过查看购物车对所选商品进行确定、挑选。 环境说明: 开发语言:Java,jsp JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea 部署容器:tomcat
1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用IAR软件开发,当前在CC2540/CC2541上运行,如果是其他型号芯片,请自行调整。 3、软件下载时,请注意接上硬件,并确认烧录器连接正常。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。 9、例程具有一定专业性,非专业人士请谨慎操作。
CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
IO总结总结总结总结总结
系统能够对客户信息管理、订单管理、商品信息管理、供应商管理、库存管理,系统用户管理等信息提供存储、更新、查询、统计的功能。 环境说明: 开发语言:Java,jsp JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea 部署容器:tomcat
前台模块: 站内新闻:发布与视频教学相关的新闻和动态。 视频学习:提供视频教学内容,供用户学习。 在线留言:用户可以在线提交留言或反馈。 用户注册:允许新用户注册成为网站的会员。 在线论坛:提供一个在线讨论的平台。 资料下载:提供学习资料或其他相关文件的下载服务。 管理员模块: 系统用户管理:管理系统用户的账户信息。 注册用户管理:管理注册用户的资料和信息。 教师信息管理:管理教师的资料和信息。 站内新闻管理:管理网站新闻内容的发布和更新。 课程信息:管理课程的相关信息。 资料下载管理:管理可供下载的资料。 论坛管理:管理在线论坛的内容和用户互动。 注册用户模块: 教师资料修改:教师可以修改自己的个人信息。 作业发布管理:用户可以发布作业或相关任务。 在线资料下载:注册用户可以下载在线资料。 学生资料管理:学生可以管理自己的资料。 学生下载作业:学生可以下载教师发布的作业。 环境说明: 开发语言:Java,jsp JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea 部署容器:tomcat
汉普美的ERP简介、实施、应用.ppt
深圳混泥土搅拌站资金、现金、费用管理规定
98年的telnetBBS软件,配合worldgroup server使用(16位),是瀛海威时空客户端的英文原版。
5aaaaaaaaaaaaaaaaaaaaaa
这个项目是一个基础的Go微服务框架,适合作为微服务架构的学习项目。希望这个项目能帮助你入门Go语言的微服务开发!
此为报告样本,完整报告的框架结构
传送带中大块煤识别检测数据集,使用coco json格式对792张图片标注,标注图片和标注信息可参考博文:https://backend.blog.csdn.net/article/details/144513245
此工具能快速有效的修复系统缺失的DLL和DirectX文件
计算机组成原理课程设计(模型机).doc