做公司网站域名怎么做记账凭证,虹桥做网站,C语言开发网站开发语言,太原网站建设找山西云起时文件上传方法#xff0c;使用Struts2#xff0c;实现Excel文件读取并写入数据库技术如题#xff1a;文件信息的批量导入……项目中经常会遇到客户的一些单表信息的数据批量导入#xff0c;也就是提供定制Excel表#xff0c;再把Excel表中的数据提取到数据库的操作#xf…文件上传方法使用Struts2实现Excel文件读取并写入数据库技术如题文件信息的批量导入……项目中经常会遇到客户的一些单表信息的数据批量导入也就是提供定制Excel表再把Excel表中的数据提取到数据库的操作其实实现起来很简单。以下是小菜鸟我的实现思路1、JSP页面Struts2实现文件上传把定制Excel上传到服务器指定目录下以供读取2、POI读取Excel表格把数据封装为持久化实体List3、批量导入数据库这是TT的开发环境Struts2.1.6 Spring2.5.6 Hibernate3.3.1 MyEclipse8.5 tomcat5.5 Oracle11g需要的Jar包SSH的就不需要说了主要就是一个POI的包我这里是 poi-3.7-beta-20100620.jar,这一个jar包可以去apach的官网上下载还有一个就是struts的IO包commons-io-1.3.2.jar顾名思义IO工具类第一步文件上传这一步网上有很多的例子JSP页面文件上传Struts.xml配置文件这里可以定制Filter指定文件类型和最大长度就不列举了/page/role/roleallinput.jsp/page/role/roleallinput.jsp对应的applicationContext.xml配置scope”prototype”class”com.adtec.datacenter.dao.manager.FileLoadDaoImpl”RoleFileUploadAction实现这里有几个点需要注意上传文件的文件如果为uploadFile,那么文件名一定要为uploadFileFileName,也就是在文件后加入FileName,不然不能识别package com.adtec.datacenter.action.manager;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.List;import javax.servlet.http.HttpServletResponse;import org.apache.commons.io.FileUtils;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.struts2.ServletActionContext;import com.adtec.datacenter.dao.manager.FileLoadDao;import com.adtec.datacenter.dao.manager.RoleDao;import com.adtec.datacenter.entity.manager.PtRoleInfo;import com.adtec.datacenter.vo.manager.RoleInfo;import com.opensymphony.xwork2.ActionSupport;public class RoleFileUploadAction extends ActionSupport{private File uploadFile;private String uploadFileFileName;private FileLoadDao fileLoadDao;private RoleDao roleDao;public File getUploadFile() {return uploadFile;}public void setUploadFile(File uploadFile) {this.uploadFile uploadFile;}public String getUploadFileFileName() {return uploadFileFileName;}public void setUploadFileFileName(String uploadFileFileName) {this.uploadFileFileName uploadFileFileName;}public FileLoadDao getFileLoadDao() {return fileLoadDao;}public void setFileLoadDao(FileLoadDao fileLoadDao) {this.fileLoadDao fileLoadDao;}public RoleDao getRoleDao() {return roleDao;}public void setRoleDao(RoleDao roleDao) {this.roleDao roleDao;}Overridepublic void validate() {super.validate();}public String loadRoleFile(){String directory “/upload/role”;String targetDirectory ServletActionContext.getServletContext().getRealPath(directory);//生成上传的文件对象File target new File(targetDirectory,uploadFileFileName);//如果文件已经存在则删除原有文件if(target.exists()){target.delete();}//复制file对象实现上传try {FileUtils.copyFile(uploadFile, target);//out response.getWriter();//out.print(“文件上传成功”);} catch (IOException e) {e.printStackTrace();}loadRoleInfo(uploadFileFileName);return SUCCESS;}/*** 把Excele表读出的数据组装成一个List,统一导入数据库* param uploadFileFileName*/public void loadRoleInfo(String uploadFileFileName){String directory “/upload/role”;String targetDirectory ServletActionContext.getServletContext().getRealPath(directory);File target new File(targetDirectory,uploadFileFileName);List roleList new ArrayList();try{FileInputStream fi new FileInputStream(target);Workbook wb new HSSFWorkbook(fi);Sheet sheet wb.getSheetAt(0);int rowNum sheet.getLastRowNum()1;for(int i1;iPtRoleInfo ptRoleInfo new PtRoleInfo();Row row sheet.getRow(i);int cellNum row.getLastCellNum();for(int j0;jCell cell row.getCell(j);String cellValue null;switch(cell.getCellType()){ //判断excel单元格内容的格式并对其进行转换以便插入数据库case 0 : cellValue String.valueOf((int)cell.getNumericCellValue()); break;case 1 : cellValue cell.getStringCellValue(); break;case 2 : cellValue String.valueOf(cell.getDateCellValue()); break;case 3 : cellValue “”; break;case 4 : cellValue String.valueOf(cell.getBooleanCellValue()); break;case 5 : cellValue String.valueOf(cell.getErrorCellValue()); break;}switch(j){//通过列数来判断对应插如的字段case 0 : ptRoleInfo.setRoleId(cellValue);break;case 1 : ptRoleInfo.setRoleName(cellValue);break;case 2 : ptRoleInfo.setDeil(cellValue);break;}}roleList.add(ptRoleInfo);}fileLoadDao.roleInfotoDB(roleList);}catch(IOException e){e.printStackTrace();}}}roleDao接口实现这里接口类就不贴出来了直接贴实现类把持久化实体List循环写入数据库package com.adtec.datacenter.dao.manager;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintWriter;import java.util.Iterator;import java.util.List;import javax.servlet.http.HttpServletResponse;import org.apache.commons.io.FileUtils;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.struts2.ServletActionContext;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.Transaction;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.adtec.datacenter.entity.manager.PtRoleInfo;import com.adtec.datacenter.vo.manager.RoleInfo;/*** 文件工具类* author Tony**/public class FileLoadDaoImpl extends HibernateDaoSupport implements FileLoadDao {/*** 把从excel表读出的数据写入到数据库*/public void roleInfotoDB(List roleList){Session session this.getHibernateTemplate().getSessionFactory().openSession();Transaction tx null;try{tx session.beginTransaction();if(roleList.size() 0){int roleNum roleList.size();for(int i0;isession.save(roleList.get(i));}/*for(Iterator iterator roleList.iterator();iterator.hasNext();){session.save(iterator.next());}*/}tx.commit();}catch(HibernateException e){e.printStackTrace();tx.rollback();}finally{session.close();}//this.getHibernateTemplate().saveOrUpdateAll(roleList);return;}}http://www.kaizea.com/?post276