struts2-excel文件的读取

本文介绍了一种使用Java实现的Excel文件批量导入用户数据的方法。该方法通过解析Excel文件的内容,将其转换为数据库中可存储的数据格式。文章详细介绍了如何读取Excel文件中的每一行数据,并将这些数据映射到相应的Java对象上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

页面:
<input type="file" id="filePath" name="filePath" value="${filePath?if_exists}" title="${action.getText('operator.excelpath')}" class="textbox_css" style="width:500px" />

<input type="button" class="btn" name="btnUpload" value=" ${action.getText("system.board.upload")} " onclick="addOperatorUpload();" />

//文件上传操作
function addOperatorUpload(){
/**上传文件不能用href,不然后台myFile拿不到值*/
var filepath=document.getElementById("filePath").value;
if(''==filepath){
alert("请选择要上传的excle文件");
return;
}
document.location.href="${base}/system/operatorBatchManager.action?act=doOther&filePath="+filepath;
}

********************************************************************
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
action:
private String filePath;

/**
* 文件
*/
private File myFile;

// myFileContentType属性用来封装上传文件的类型
private String myFileContentType;

// myFileFileName属性用来封装上传文件的文件名
private String myFileFileName;
//以上get/set方法略
/**
* excel文件读取
*/
public String doOther() throws Exception {

myFile = new File(filePath);
// 获得文件名
String type = myFile.getName();// this.getMyFileFileName();
int i = 0;
while (i != -1) {
// 找到上传文件的类型的位置,这个地方的是'.'
i = type.indexOf(".");
// 截取上传文件的后缀名,此时得到了文件的类型
type = type.substring(i + 1);
}
// 如果是excle文件就开始处理
if ("xls".equals(type) || "xlsx".equals(type)) {
// 获得文件路径
String str_path = myFile.toString();
this.excelDataImportOracle(str_path);
} else {
// 文件类型不对
this.setErrorInfo(getText("info.fileErrorType"));
}
return "addInput";
}


public void excelDataImportOracle(String pathname) throws Exception {
try {
ArrayList<AdminWorkArea> al = this.readExcel(pathname);
// 将数据保存给分页对象返回页面
this.pageInfo.setSearchResult(al);
}


public ArrayList<AdminWorkArea> readExcel(String pathname) {
String cellStr = null;// 单元格,最终按字符串处理
InputStream is = null;
ArrayList<AdminWorkArea> list = new ArrayList<AdminWorkArea>();
try {
is = new FileInputStream(new File(pathname));// 获取文件输入流
HSSFWorkbook workbook = new HSSFWorkbook(is);// 创建Excel2003文件对象
HSSFSheet sheet = workbook.getSheetAt(0);// 取出第一个工作表,索引是0
// 开始循环遍历行,表头不处理,从1开始
for (int i = 1; i <= sheet.getLastRowNum(); i++) {
HSSFRow row = sheet.getRow(i);// 获取行对象
if (row == null) {// 如果为空,不处理
continue;
}

AdminWorkArea o = new AdminWorkArea();

// 循环遍历单元格
for (int j = 0; j < row.getLastCellNum(); j++) {
HSSFCell cell = row.getCell((short) j);// 获取单元格对象
if (cell == null) {// 单元格为空设置cellStr为空串
cellStr = "";
} else if (cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) {// 对布尔值的处理
cellStr = String.valueOf(cell.getBooleanCellValue());
} else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {// 对数字值的处理
cellStr = String.valueOf(cell.getNumericCellValue());
} else {// 其余按照字符串处理
cellStr = cell.getStringCellValue();
}
// 下面按照数据出现位置封装到bean中
switch (j) {
case 0: o.setLogin(cellStr);
break;
case 1: o.setName(cellStr);
break;
case 2: o.setAgentSkills(cellStr);
break;
case 4: o.setSubccNo(cellStr);
break;
case 5: o.setVdn(cellStr);
break;
case 6:// 工作组id
o.setGroupId(cellStr);
break;
}
}
// 登录名做为键,保存到map中到时用于增加
map.put(o.getLogin(), o);
list.add(o);// 将excel用户列表放入集合中
}
} catch (Exception e) {
e.printStackTrace();
} finally {// 关闭文件流
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return list;
}

************************************************************
struts.xml文件:
<!-- 批量用户管理-->
<action name="operatorBatchManager" class="com.tempus.fw.operatorBatchAction">
<result name="addInput" type="freemarker">
/WEB-INF/core/pages/system/operatorBatchOpt.ftl
</result>
</action>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值