这两天用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;
}
}
写的比较简单,如有错误,希望讨论和指正。
分享到:
相关推荐
为了将这两个过程结合起来,我们可以先用JXL读取Excel文件中的数据,然后通过OracleImporter类将这些数据批量插入到数据库。在这个过程中,可能需要对数据进行一些预处理,比如类型转换,错误检查等。 值得注意的是...
本篇文章将深入探讨JXL库在操作Excel和数据库导出Excel文件方面的应用。 首先,我们来了解JXL的基本用法。JXL支持读取和写入Biff8格式的Excel文件(即97-2003版本的.XLS文件),这涵盖了大部分常见的Excel文件需求...
以上就是关于“Java导入Excel到数据库”的详细知识点,涵盖了文件路径配置、合并单元格处理、数据库连接、Excel操作和数据导入等多个方面。这个过程需要对Java、数据库操作以及Excel处理有深入理解,才能有效地完成...
标题“利用jxl把excel中的数据导入数据库”指的是使用Java Excel API(jxl)这个库来读取Excel文件中的数据,并将这些数据批量地导入到关系型数据库中。这是一个常见的需求,特别是在处理大量结构化数据时,例如进行...
7. **部署与运行**: 下载项目后,你需要将所有依赖的库(如Struts2、POI或JXL的jar文件)添加到项目的类路径中,然后将项目部署到支持Servlet容器(如Tomcat)的服务器上,根据提示修改Excel文件路径,即可运行程序...
在Java开发中,导入Excel数据并将其保存到本地数据库是一项常见的任务,特别是在处理大量结构化数据时。这里我们将深入探讨如何使用jxl库来实现这一功能。 jxl是一个流行的Java库,专门用于读写Microsoft Excel文件...
`jxl`库是一个广泛使用的第三方库,它允许开发者轻松地读取、写入和修改Excel文件。本篇文章将深入探讨如何利用`jxl.jar`包来实现这一功能。 首先,确保你已经正确地将`jxl.jar`文件添加到你的项目类路径中。这可以...
我们可以使用jxl库来读取excel文件,并将数据导入到mysql数据库中。 首先,我们需要在jsp文件中引入jxl库,并创建一个Workbook对象,用于读取excel文件。 `jxl.Workbook rwb = null;` 然后,我们可以使用Workbook...
现在,既然我们已经下载了jxl.jar,就可以开始编写Java代码来实现数据库内容导入到Excel的功能。首先,从数据库中提取数据,然后使用jxl库将数据写入Excel工作表。这通常涉及到数据库查询、结果集遍历以及使用jxl的...
导入时,通常会解析Excel文件,将数据映射到Java对象,然后存储在数据库中;导出时,从数据库获取数据,生成Excel文件。 为了更好地理解这两个库的用法,你可以查看提供的"Excel导入导出(jxl及Poi)工具类"压缩包中...
### 导入Excel数据到数据库:详细步骤与代码解析 #### 一、前言 在实际工作中,我们经常需要将Excel文件中的数据批量导入到数据库中。这种需求常见于数据迁移、数据分析等领域。本文将详细介绍如何使用Java Excel ...
7. **数据库导入**:文件“将excel的内容导入到数据库中.doc”很可能是详细的操作指南,描述了如何设置数据库连接,创建表结构,以及执行SQL语句来批量导入Excel数据。 在实际操作中,开发者通常会先使用Java库(如...
这个过程在处理大量数据时非常有用,比如将数据库中的数据导出到Excel,或者从Excel文件中导入数据到数据库。 在描述中提到的“博文链接:https://xgtxxxx.iteye.com/blog/1616979”,虽然具体链接无法访问,但可以...
这个"jxl导入导出excel完美运行demo"提供了从零开始进行数据导入导出的基础模板,通过学习和理解这个示例,开发者能够快速掌握使用`jxl`库处理Excel文件的方法,并应用于实际项目中。 总之,`jxl`库是Java处理Excel...
在“jxl java对excel的操作,导入mysql中”这个主题中,我们将探讨如何使用JXL库来处理Excel数据,并将这些数据有效地导入到MySQL数据库中。 首先,你需要下载并引入JXL库到你的Java项目中。`jxl.jar`是主要的库...
这通常涉及到文件上传操作,可以使用Apache Commons FileUpload或者其他文件上传库来实现。确保文件被安全地保存在服务器的临时目录中。 2. **临时存储**:一旦文件上传完成,将其保存到一个临时位置,避免对原始...