<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">action类:Excel导入</span>
<span style="white-space:pre"> </span>//注入代理对象
@Resource
private UserService userService;
<pre name="code" class="java"><span style="white-space:pre"> </span><pre name="code" class="java"><span style="white-space:pre"> </span>//要设置导入的excel文件 变量
private File userExcel;//excel文件
private String userExcelFileName;//excel文件名称
//设置两个变量,文件和文件名称private File headImg;private String headImgFileName;
</pre><pre name="code" class="java"><span style="white-space:pre"> </span><pre name="code" class="java"><span style="white-space:pre"> </span>//excel导入有返回值,返回页面重写刷新
public String importExcel() {
//创建一个excel导入的方法=上传
<span style="white-space:pre"> </span>userService.importExcel(userExcel);
return "list";
}
</pre><pre name="code" class="java"><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">在action调用service层方法处理action的业务逻辑:</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">
</span>
<span style="white-space:pre"> </span>/**
* 导入excel文件
* @param userExcel excel文件
*/
void importExcel(File userExcel);
<span style="white-space:pre"> </span>// excel文件导入
@Override
public void importExcel(File userExcel) {
try {
// 根据文件,创建excel文件薄对象
Workbook workbook = WorkbookFactory.create(userExcel);
// 获取工作表
Sheet sheet = workbook.getSheetAt(0);
// 读取excel的每一行(即只获取有数据的行数)课外知识补充:excel总共65535行
for (int i = 0; i < sheet.getPhysicalNumberOfRows(); i++) {
// 从第三行开始读取
Row row = sheet.getRow(i + 2);
// 把每一行里面的数据封装成一个对象
User user = new User();
// 开始封装数据
user.setName(row.getCell(0).getStringCellValue());
user.setAccount(row.getCell(1).getStringCellValue());
user.setDept(row.getCell(2).getStringCellValue());
// 三元运算符 判断性别
user.setGender("男".equals(row.getCell(3).getStringCellValue()) ? true
: false);
try {
// 如果电话单元格是string,直接获取字符串数据
user.setMobile(row.getCell(4).getStringCellValue());
} catch (Exception e) {
// 否则就转成字符串
double mb = row.getCell(4).getNumericCellValue();
BigDecimal bd = BigDecimal.valueOf(mb);
user.setMobile(bd.toString());
}
user.setEmail(row.getCell(5).getStringCellValue());
user.setBirthday(row.createCell(6).getDateCellValue());
user.setPassword("000000000" + i);
// 对象封装完毕,保存对象
this.save(user);
}
} catch (Exception e) {
e.printStackTrace();
}
}
页面jsp代码块
<span style="white-space:pre"> </span><input type="button" value="导入" class="s_button" onclick="doImportExcel()"/>
<span style="white-space:pre"> </span>//excel导入
function doImportExcel() {
//导入必须是post提交
document.forms[0].action ="user_importExcel.action";
document.forms[0].submit();
}
导入用户列表 (读取excel; 文件上传)
a. listUI.jsp
点击:“导入”
a1: 获取表单
a2: 修改表单提交地址
a3: 提交表单
post
multipart/form-data
b. Action---> importExcel()
b1: 获取上传的excel文件
b2: 读取excel,
获取每一行数据,封装User对象,保存对象!