这篇文章是我第一个博客的第一篇文章,希望可以给大家一些帮助吧。
这是在做项目时用到一个功能 主要是实现批量导入用户信息到数据库,在做这个功能的时候也是在网上找了一些代码,感觉网上一些代码写的不是很全。我在这整理了一下,摘取出其中的读取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文件路径: <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文件里的每一列都是固定的,所以我就没有加判断。
希望能给大家一些帮助,如果有什么问题可以给我留言。
分享到:
相关推荐
Excel导入数据库是一项常见的需求,特别是在数据处理和数据分析场景中。Apache POI库是Java中处理Microsoft Office文档(如Excel)的标准库。在这个场景中,我们将探讨如何使用Struts2和POI将Excel数据导入到SQL ...
在本项目中,"struts1 poi Excel批量导入支持xls和xlsx"是一个基于Struts1和POI实现的功能,它允许用户批量导入Excel数据,无论是旧版的.xls格式还是较新的.xlsx格式。 首先,我们需要了解Apache POI的基本用法。...
3. **使用POI读取Excel**: POI提供了API来操作Excel文件。使用`HSSFWorkbook`类读取.xls文件,或`XSSFWorkbook`类读取.xlsx文件。通过`Sheet`对象获取工作表,再通过`Row`和`Cell`对象访问具体的数据。 4. **...
在Struts2中实现Excel导入功能,可以让用户上传Excel文件,然后在服务器端进行数据处理,例如存储到数据库或者进行数据分析。 在描述中提到的“完整美运行有JAR包”,意味着这个压缩包可能包含了所有必要的库文件,...
2. **编写Action**:创建一个Struts2 Action类,包含一个方法用于导出数据到Excel,另一个方法用于处理Excel导入。导出时,从Oracle查询数据,然后使用POI创建Excel工作簿和工作表,将数据填充到单元格中。导入时,...
在本项目中,“Struts2+POI3.7做excel导入”意味着我们将利用Struts2的文件上传功能结合POI库,实现用户从网页上选择Excel文件并将其数据导入到系统中的功能。 首先,我们需要在Struts2的配置文件(struts.xml)中...
这个“javaEE中Excel导入数据库范例”提供了一个完整的WEB项目,使用Struts作为MVC框架,实现了从Excel文件读取数据并将其存储到数据库的功能。以下是对这个范例的详细说明: 1. **JavaEE基础**:JavaEE(Java ...
以上就是关于"Struts2 poi 导入xls xlsx 绝对兼容"的相关知识点,通过Struts2和Apache POI的结合,开发者可以轻松地在Java Web应用中处理Excel文件,实现数据的导入和导出功能,提高工作效率。在实际项目中,可以...
在Struts2中实现Excel的导入和导出功能,可以帮助用户处理大量的数据,例如批量导入数据库,或者允许用户下载数据为Excel格式进行分析。下面我们将深入探讨Struts2中Excel导入导出的关键知识点。 一、Apache POI库 ...
标题 "基于Struts2及POI实现的导入功能" 指的是在Java Web开发中,使用Struts2框架和Apache POI库来实现在Web应用程序中导入数据的功能。Struts2是一个流行的MVC(Model-View-Controller)框架,用于构建可维护性和...
通过POI,我们可以读取Excel的工作簿、工作表和单元格数据,将其转换为适合数据库存储的格式。这可能涉及到数据清洗、类型转换等预处理步骤。 一旦数据准备好,就可以使用JDBC(Java Database Connectivity)将这些...
同时,如果你需要支持 Excel 的导入,可以创建相应的 Action 方法,读取客户端上传的文件,然后利用 POI 解析 Excel 数据并存入数据库。 总之,通过 Struts2 和 POI 的结合,开发者可以方便地在 Web 应用中提供 ...
标题“文件上传使用POI导入数据库”涉及到的技术主要包括文件上传、Apache POI库以及数据库操作。这个场景通常出现在Web应用中,用户通过上传Excel文件,然后应用使用POI解析文件内容,最后将数据存储到数据库中。...
首先,我们需要使用Java API来读取Excel文件。Java中的Apache POI库是处理Microsoft Office格式文件的理想选择,包括Excel的.XLS和.XLSX格式。POI库允许我们创建、修改和显示MS Office文件,因此我们可以利用它来...
1. 使用Java库如Apache POI来读取Excel文件,解析其内容。 2. 将Excel数据转换为与数据库表结构匹配的对象集合。 3. 使用Hibernate或JDBC将这些对象批量保存到数据库中,可能需要处理事务以确保数据的一致性。 **...
Java Web 数据库数据与 Excel 表格形式导入导出 Java Web 数据库数据与 Excel 表格形式导入导出是指通过 Java Web 应用程序将数据库数据导入到 Excel 表格中,并实现数据的导出。该技术主要利用了 JXL(Java Excel ...
在Excel导入导出过程中,Apache POI库起到了核心作用。POI提供了HSSF(Horrible Spreadsheet Format)和XSSF(XML Spreadsheet Format)API,分别用于读写旧版的Excel 97-2003格式(.xls)和较新的Excel 2007及以上...
在导入Excel功能中,Java程序通常会读取用户上传的Excel文件,解析其中的数据,可能将其存储到数据库或进行其他处理。这涉及到POI的HSSFWorkbook(.xls文件)或XSSFWorkbook(.xlsx文件)类,用于打开Excel文件,...
使用Apache POI库,可以方便地读取Excel文件。POI提供API来访问和修改Excel文件,创建一个工作簿对象,然后通过工作表和行对象来获取数据。 6. **数据插入**: 读取到数据后,你需要创建SQL的INSERT语句,将Excel...
它提供了API,使得开发者可以在Java中创建、修改和读取Excel文件。例如,使用HSSFWorkbook处理.xls格式,使用XSSFWorkbook处理.xlsx格式。 2. **Excel文件操作**: 使用POI,你可以创建新的工作簿,添加工作表,插入...