日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

java struts2 excel上传_文件上传方法,使用Struts2,实现Excel文件读取并写入数据库技术...

發布時間:2023/12/1 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java struts2 excel上传_文件上传方法,使用Struts2,实现Excel文件读取并写入数据库技术... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文件上傳方法,使用Struts2,實現Excel文件讀取并寫入數據庫技術

如題:文件信息的批量導入……

項目中經常會遇到客戶的一些單表信息的數據批量導入,也就是提供定制Excel表,再把Excel表中的數據提取到數據庫的操作,其實實現起來很簡單。以下是小菜鳥我的實現思路:

1、JSP頁面+Struts2實現文件上傳,把定制Excel上傳到服務器指定目錄下,以供讀取;

2、POI讀取Excel表格,把數據封裝為持久化實體List

3、批量導入數據庫

這是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;

}

@Override

public 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 i=1;i

PtRoleInfo ptRoleInfo = new PtRoleInfo();

Row row = sheet.getRow(i);

int cellNum = row.getLastCellNum();

for(int j=0;j

Cell 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 i=0;i

session.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/?post=276

總結

以上是生活随笔為你收集整理的java struts2 excel上传_文件上传方法,使用Struts2,实现Excel文件读取并写入数据库技术...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。