`
truth99
  • 浏览: 63203 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Java poi Struts2 读取Excel 导入数据库

    博客分类:
  • Java
阅读更多

这篇文章是我第一个博客的第一篇文章,希望可以给大家一些帮助吧。


这是在做项目时用到一个功能 主要是实现批量导入用户信息到数据库,在做这个功能的时候也是在网上找了一些代码,感觉网上一些代码写的不是很全。我在这整理了一下,摘取出其中的读取excel文件数据代码,仅供参考。

下面是页面代码:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>读取Excel数据</title>
<style type="text/css">
div {
	position: relative;
	top: 120px;
	text-align:center;
}
.submit {
	clear: both;
	position: relative;
	border: 1px solid black;
	background: blue;
	color: white;
	width: 70px;
	height: 30px;
	border-radius: 6px;
	box-shadow: #000 3px 3px;
	cursor: pointer;
}
.submit:hover{
	background:#6D6DFF;
}
.submit:active{
	top:3px;
	left:3px;
	box-shadow: #000 0px 0px;
	background:#6D6DFF;
}
</style>
<script type="text/javascript">
	function formCheck(form){
		if(form.excelFile.value == ""){
			alert("请选择上传的文件");
			return false;
		}else{
			var str= form.excelFile.value;
            var lc = str.toLowerCase();
            var arr = lc.split(".");
            var extname = arr[arr.length-1];
           	if(extname != "xls" && extname != "xlsx"){
	             alert("请选择excel格式文件!");
	             return false;
            }
		}
	}
</script>
</head>
<body>
<div>
<form name="readExcel" action="/importExcel" method="post" enctype="multipart/form-data" onsubmit="return formCheck(this);">   
    Excel文件路径:&nbsp;<input type="file" name="excelFile"><br> 
    <input class="submit" type="submit" value="导入">
</form>
</div>
</body>
</html>


我用的是JSP,在页面中加了一段JS代码,用来判断是否为空和是否为excel格式文件。

下面是struts.xml的配置:

<package name="default" extends="json-default">
	<action name="importExcel" class="com.truth.action.ImportExcelAction">
		<result>/importUser.jsp</result>
	</action>
</package>


struts.xml 的配置我就不多说了,大家应该能看懂吧。

在写java代码之前,要在项目里引入一个poi.jar文件,poi.jar下载地址

下面的是action中的代码:

package com.truth.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;

import com.opensymphony.xwork2.ActionSupport;

import com.truth.domain.User;

public class ImportExcelAction extends ActionSupport{
	private static final long serialVersionUID = 2078983971691770134L;
	private static final Logger log = Logger.getLogger(ImportExcelAction.class);
	
	private File excelFile; //上传的文件
    
    private String excelFileName; //保存原始文件名     
    
    private User user;
    
    //判断文件类型
    public Workbook createWorkBook(InputStream is) throws IOException{  
        if(excelFileName.toLowerCase().endsWith("xls")){  
            return new HSSFWorkbook(is);  
        }else if(excelFileName.toLowerCase().endsWith("xlsx")){
            return new XSSFWorkbook(is);
        }else{
        	return null;
        }
    }
    
    public String execute() throws Exception{
        Workbook book = createWorkBook(new FileInputStream(excelFile));
        if(book == null){//防止跳过页面直接访问报错
        	tip = "请选择excel格式文件";
        	return SUCCESS;
        }
        //book.getNumberOfSheets();  判断Excel文件有多少个sheet
        log.debug(book.getNumberOfSheets());
        //获取激活的sheet索引,就是在excel保存时显示的是哪个sheet
        log.debug(book.getActiveSheetIndex());
        //通过索引获取sheet信息
        Sheet sheet = book.getSheetAt(book.getActiveSheetIndex());
//        保存工作单名称
//        Row firstRow = sheet.getRow(0);
//        Iterator<Cell> iterator = firstRow.iterator();
        //保存列名
//        List<String> cellNames = new ArrayList<String>();
//        while (iterator.hasNext()) {
//            cellNames.add(iterator.next().getStringCellValue());
//        }
    	//用于存储用户信息
        List<User> users = new ArrayList<User>();
        //用于转换为手机号
        DecimalFormat df = new DecimalFormat("#");
    	//遍历用户信息
    	for (int i = 1;i <=sheet.getLastRowNum();i++){
    		Row ros = sheet.getRow(i);
			try {
				User u = new User();
				u.setName(ros.getCell(0).getStringCellValue());
				String phone = df.format(ros.getCell(1).getNumericCellValue());
				u.setPhone(phone.trim());
				u.setEmail(ros.getCell(2).getStringCellValue());
				u.setCompany(ros.getCell(3).getStringCellValue());
				users.add(u);
			} catch (Exception e){
				e.printStackTrace();
			}
    	}
        return SUCCESS;
    }

	public File getExcelFile() {
		return excelFile;
	}
	public void setExcelFile(File excelFile) {
		this.excelFile = excelFile;
	}
	public String getExcelFileName() {
		return excelFileName;
	}
	public void setExcelFileName(String excelFileName) {
		this.excelFileName = excelFileName;
	}
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	} 
}


上面的代码已经很清楚的教给大家怎么使用了。
在读取excel数据列是最好要判断每一列的类型,如有手机号列就在读取是就要调用Cell.getNumericCellValue();方法,否则就会报错。我做的这个excel文件里的每一列都是固定的,所以我就没有加判断。

希望能给大家一些帮助,如果有什么问题可以给我留言。
分享到:
评论

相关推荐

    struts2 Excel导入数据库

    Excel导入数据库是一项常见的需求,特别是在数据处理和数据分析场景中。Apache POI库是Java中处理Microsoft Office文档(如Excel)的标准库。在这个场景中,我们将探讨如何使用Struts2和POI将Excel数据导入到SQL ...

    struts1 poi Excel批量导入支持xls和xlsx-源码java

    在本项目中,"struts1 poi Excel批量导入支持xls和xlsx"是一个基于Struts1和POI实现的功能,它允许用户批量导入Excel数据,无论是旧版的.xls格式还是较新的.xlsx格式。 首先,我们需要了解Apache POI的基本用法。...

    Struts2 poi动态导入导出Excel源码示例

    3. **使用POI读取Excel**: POI提供了API来操作Excel文件。使用`HSSFWorkbook`类读取.xls文件,或`XSSFWorkbook`类读取.xlsx文件。通过`Sheet`对象获取工作表,再通过`Row`和`Cell`对象访问具体的数据。 4. **...

    Struts2+Excel导入功能 完整美运行有JAR包

    在Struts2中实现Excel导入功能,可以让用户上传Excel文件,然后在服务器端进行数据处理,例如存储到数据库或者进行数据分析。 在描述中提到的“完整美运行有JAR包”,意味着这个压缩包可能包含了所有必要的库文件,...

    Struts2 Excel导入导出数据

    2. **编写Action**:创建一个Struts2 Action类,包含一个方法用于导出数据到Excel,另一个方法用于处理Excel导入。导出时,从Oracle查询数据,然后使用POI创建Excel工作簿和工作表,将数据填充到单元格中。导入时,...

    Struts2+POI3.7做excel导入

    在本项目中,“Struts2+POI3.7做excel导入”意味着我们将利用Struts2的文件上传功能结合POI库,实现用户从网页上选择Excel文件并将其数据导入到系统中的功能。 首先,我们需要在Struts2的配置文件(struts.xml)中...

    javaEE中Excel导入数据库范例

    这个“javaEE中Excel导入数据库范例”提供了一个完整的WEB项目,使用Struts作为MVC框架,实现了从Excel文件读取数据并将其存储到数据库的功能。以下是对这个范例的详细说明: 1. **JavaEE基础**:JavaEE(Java ...

    struts2 poi 导入xls xlsx 绝对兼容

    以上就是关于"Struts2 poi 导入xls xlsx 绝对兼容"的相关知识点,通过Struts2和Apache POI的结合,开发者可以轻松地在Java Web应用中处理Excel文件,实现数据的导入和导出功能,提高工作效率。在实际项目中,可以...

    struts2Ecxel导入导出

    在Struts2中实现Excel的导入和导出功能,可以帮助用户处理大量的数据,例如批量导入数据库,或者允许用户下载数据为Excel格式进行分析。下面我们将深入探讨Struts2中Excel导入导出的关键知识点。 一、Apache POI库 ...

    基于struts2及poi实现的导入功能

    标题 "基于Struts2及POI实现的导入功能" 指的是在Java Web开发中,使用Struts2框架和Apache POI库来实现在Web应用程序中导入数据的功能。Struts2是一个流行的MVC(Model-View-Controller)框架,用于构建可维护性和...

    ajax 上传 下载 把excel 中的数据导入到数据库 struts

    通过POI,我们可以读取Excel的工作簿、工作表和单元格数据,将其转换为适合数据库存储的格式。这可能涉及到数据清洗、类型转换等预处理步骤。 一旦数据准备好,就可以使用JDBC(Java Database Connectivity)将这些...

    struts2+poi实现excel文件的导出

    同时,如果你需要支持 Excel 的导入,可以创建相应的 Action 方法,读取客户端上传的文件,然后利用 POI 解析 Excel 数据并存入数据库。 总之,通过 Struts2 和 POI 的结合,开发者可以方便地在 Web 应用中提供 ...

    文件上传使用POI导入数据库

    标题“文件上传使用POI导入数据库”涉及到的技术主要包括文件上传、Apache POI库以及数据库操作。这个场景通常出现在Web应用中,用户通过上传Excel文件,然后应用使用POI解析文件内容,最后将数据存储到数据库中。...

    SSH框架中关于EXCEL表格导入到MySQL数据库

    首先,我们需要使用Java API来读取Excel文件。Java中的Apache POI库是处理Microsoft Office格式文件的理想选择,包括Excel的.XLS和.XLSX格式。POI库允许我们创建、修改和显示MS Office文件,因此我们可以利用它来...

    简单的SSH三层架构+Ajax实现Google自动搜索极为相似版+直接Excel导入数据库

    1. 使用Java库如Apache POI来读取Excel文件,解析其内容。 2. 将Excel数据转换为与数据库表结构匹配的对象集合。 3. 使用Hibernate或JDBC将这些对象批量保存到数据库中,可能需要处理事务以确保数据的一致性。 **...

    Java web 数据库数据与excel表格形式导入导出.docx

    Java Web 数据库数据与 Excel 表格形式导入导出 Java Web 数据库数据与 Excel 表格形式导入导出是指通过 Java Web 应用程序将数据库数据导入到 Excel 表格中,并实现数据的导出。该技术主要利用了 JXL(Java Excel ...

    ssh整合poi导入导出Excel

    在Excel导入导出过程中,Apache POI库起到了核心作用。POI提供了HSSF(Horrible Spreadsheet Format)和XSSF(XML Spreadsheet Format)API,分别用于读写旧版的Excel 97-2003格式(.xls)和较新的Excel 2007及以上...

    java实现导入导出Excel表

    在导入Excel功能中,Java程序通常会读取用户上传的Excel文件,解析其中的数据,可能将其存储到数据库或进行其他处理。这涉及到POI的HSSFWorkbook(.xls文件)或XSSFWorkbook(.xlsx文件)类,用于打开Excel文件,...

    将excel的数据导入到数据库中

    使用Apache POI库,可以方便地读取Excel文件。POI提供API来访问和修改Excel文件,创建一个工作簿对象,然后通过工作表和行对象来获取数据。 6. **数据插入**: 读取到数据后,你需要创建SQL的INSERT语句,将Excel...

    POI导入导出excel

    它提供了API,使得开发者可以在Java中创建、修改和读取Excel文件。例如,使用HSSFWorkbook处理.xls格式,使用XSSFWorkbook处理.xlsx格式。 2. **Excel文件操作**: 使用POI,你可以创建新的工作簿,添加工作表,插入...

Global site tag (gtag.js) - Google Analytics