(一、数据批量导入)
一、数据信息批量导入注意点:
1、<form name="form1" action="提交的Action处理类" method="post"enctype="multipart/form-data">
<input type="file" name="excel"/>
</form>
注意:若没有enctype=” multipart/form-data”则:
2、声明上传文件类型时注意:
Private File excel;//(excel来自form表单的name属性)
Private String excelContentType;//文件上传类型,格式必须是form里的name+contentType;
Private String excelFileName;//文件上传的名字,格式必须是form里的name+FileName;
Private String path;//文件上传的路径
3、涉及到Excel表和数据库中的字段进行强制转换时:不用包装类如Integer,直接用基本类型如int进行转换。如图所示:
(二)FrameeSet 布局
一、jsp界面中
<framesetcols="18%,*">
<framename="leftFrame"src="empAction!left.action" noresize scrolling="no">
<framename="rightFrame"src="center.jsp">
</frameset>
1、noresize scrolling="no"表示左右分好的比例不可拖动。
2、当涉及到利用Ajax,实现无刷新技术时,不能直接src到某个jsp界面中,需src="empAction!left.action"到一个空的Action ,通过Action跳转到此jsp界面中。
(三)全选、反选、单个信息异步刷新案例
//选择项
<inputtype="checkbox"name="Ids"id="id"value="<s:propertyvalue="#request.emp.employeementId"/>"/>
<s:property value="#emp.employeementName"/>
//Ajax异步刷新删除操作
<a href="javaScript:deleteInfo(<s:property value="#emp.employeementId"/>);" id="<s:property value="#emp.employeementId"/>">删除</a>
}
批量导入实例代码:
package com.mstanford.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import javax.servlet.ServletContext;
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;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.struts2.ServletActionContext;
import com.mstanford.entity.DepartMent;
import com.mstanford.entity.EmployeeMent;
import com.mstanford.entity.UserRole;
import com.mstanford.service.impl.EmployeeMentService;
import com.mstanford.util.ExcelCellType;
public class ImportExcell extends BaseAction{
//文件对象名、文件类型、文件路径、上传文件名
private File excel;
private String excelContentType;
private String path;
private String excelFileName;
//对象
private UserRole userRole=new UserRole();
private DepartMent departMent=new DepartMent();
private EmployeeMentService employeeService;
public EmployeeMentService getEmployeeService() {
return employeeService;
}
public void setEmployeeService(EmployeeMentService employeeService) {
this.employeeService = employeeService;
}
public File getExcel() {
return excel;
}
public void setExcel(File excel) {
this.excel = excel;
}
public String getExcelContentType() {
return excelContentType;
}
public void setExcelContentType(String excelContentType) {
this.excelContentType = excelContentType;
}
public String getExcelFileName() {
return excelFileName;
}
public void setExcelFileName(String excelFileName) {
this.excelFileName = excelFileName;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String execute(){
try {
// 得到上传文件在服务器上的存储目录,并写入到指定文件中
ServletContext ctx = ServletActionContext.getServletContext();
path = ctx.getRealPath("/WEB-INF/path") +"/"+ this.excelFileName;
// 得到上传文件输入流
FileInputStream fin = new FileInputStream(this.getExcel());
FileOutputStream fout = new FileOutputStream(path);
//较大文件上传
int b = fin.read();
while (b != -1) {
fout.write(b);
b = fin.read();
}
//调用importExcelToDataBase方法读取文件内容
this.importData();
fin.close();
fout.close();
this.excel.delete();
return "success";
} catch (Exception e) {
e.printStackTrace();
return "error";
}
}
/**
* 读取数据并导入
*/
public void importData(){
File checkFile=new File(this.path);
if(checkFile.exists()){
try {
//获取上传的文件
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(checkFile));
//创建工作平台
HSSFWorkbook wb = new HSSFWorkbook(fs);
//获取指定位置对象(iSheet为工作表的位置索引)
HSSFSheet sheet = wb.getSheetAt(0);
//获取最后一行索引(从0开始)
int last = sheet.getLastRowNum();
//根据表模板定义的数据读取的起始位置
Integer index=new Integer(1);
for (index=1;index<=last;index++) {
HSSFRow row=sheet.getRow(index);
EmployeeMent emp=new EmployeeMent();
//获取用户名
emp.setEmployeementName(row.getCell(1).getStringCellValue());
//获取登录用户名
emp.setEmployeementLoginName(row.getCell(2).getStringCellValue());
//获取登录的密码
if(row.getCell(3).getCellType()==HSSFCell.CELL_TYPE_NUMERIC){
emp.setEmployeementPassword(String.valueOf(row.getCell(3).getNumericCellValue()));
}
else{
emp.setEmployeementPassword(row.getCell(3).getStringCellValue());
}
//获取性别
emp.setEmployeementSex(row.getCell(4).getStringCellValue());
//获取年龄
if(row.getCell(5).getCellType()==HSSFCell.CELL_TYPE_NUMERIC){
emp.setEmployeementAge((int)row.getCell(5).getNumericCellValue());
}
else{
emp.setEmployeementAddress(row.getCell(5).getStringCellValue());
}
if(row.getCell(6).getCellType()==HSSFCell.CELL_TYPE_NUMERIC){
emp.setEmployeementQQ(String.valueOf(row.getCell(6).getNumericCellValue()));
}
else{
emp.setEmployeementQQ(row.getCell(6).getStringCellValue());
}
//电话
if(row.getCell(7).getCellType()==HSSFCell.CELL_TYPE_NUMERIC){
emp.setEmployeementPhone(String.valueOf(row.getCell(7).getNumericCellValue()));
}
else{
emp.setEmployeementPhone(row.getCell(7).getStringCellValue());
}
//邮箱
if(row.getCell(8).getCellType()==HSSFCell.CELL_TYPE_NUMERIC){
emp.setEmployeementEmail(String.valueOf(row.getCell(8).getNumericCellValue()));
}
else{
emp.setEmployeementEmail(row.getCell(8).getStringCellValue());
}
//家庭住址
emp.setEmployeementAddress(row.getCell(9).getStringCellValue());
//班级
if(row.getCell(10).getCellType()==HSSFCell.CELL_TYPE_NUMERIC){
emp.setEmployeementClass(String.valueOf(row.getCell(10).getNumericCellValue()));
}
else{
emp.setEmployeementClass(row.getCell(10).getStringCellValue());
}
//获取部门信息
String depart;
depart=row.getCell(11).getStringCellValue();
departMent=employeeService.getDepartMent(depart);
if(departMent!=null){
emp.setDepartMent(departMent);
}
else{
DepartMent departName=new DepartMent();
departName.setDepartmentName(depart);
}
//获取角色信息
String userRoleName;
userRoleName=row.getCell(12).getStringCellValue();
userRole=employeeService.getUserRole(userRoleName);
if(userRole!=null){
emp.setUserRole(userRole);
}
else{
UserRole role=new UserRole();
role.setUserRoleName(userRoleName);
}
employeeService.addEmployeeMent(emp);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}