我们也可能会实现这样的功能,将excel中的数据导入到数据库中,同样可以实现,所需的jar包以及相关文档参见我的前一篇博客:struts2结合poi-3.7实现将数据导出为excel,环境变量和框架都搭建好了,那么我们就开始吧,同样和struts2实现文件上传的方式差不多,只不过在读取到excel后,poi对excel文件有了自己的处理方式!

1、页面jsp页面:

  <body>      <form action="<%=basePath%>uploadExcel.do" method="post" enctype="multipart/form-data">         <!-- name名称和Action中File对象的取名要一样哦 -->         <input type="file" name="excelFile"/><input type="submit" value="导入数据"/>      </form>    </body>


struts2结合poi-3.7实现excel文件数据导入_struts

2、编写我们的用来封装接收处理的excel的bean类文件:ExcelWorkSheet

package com.repair.query.action;    import java.util.ArrayList;  import java.util.List;    /**   * 处理excel导入bean类   * @author Administrator   *   * @param <T>   */  public class ExcelWorkSheet<T> {  	      private String sheetName;         private List<T> data = new ArrayList<T>();  //数据行         private List<String> columns; //列名           	public String getSheetName() {  		return sheetName;  	}  	public void setSheetName(String sheetName) {  		this.sheetName = sheetName;  	}  	public List<T> getData() {  		return data;  	}  	public void setData(List<T> data) {  		this.data = data;  	}  	public List<String> getColumns() {  		return columns;  	}  	public void setColumns(List<String> columns) {  		this.columns = columns;  	}    }  


3、编写我们处理的action类:

package com.repair.query.action;    import java.io.File;  import java.io.FileInputStream;  import java.io.IOException;  import java.io.InputStream;  import java.util.ArrayList;  import java.util.Iterator;  import java.util.List;    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.poi.xssf.usermodel.XSSFWorkbook;    import com.repair.common.pojo.JCZXFixRec;    /**   * 导入excel数据   * @author Administrator   *   */  public class UploadExcelAction {  	  	private File excelFile;//与jsp页面的file标签的name属性一样  	private String excelFileFileName;//File对象的名称+FileName,一定要这样写,不然名称获取不到  	private ExcelWorkSheet<JCZXFixRec> excelWorkSheet;//将数据记录封装为我们需要的对象  	  	public String execute() throws Exception{  		Workbook workBook=createWorkbook(new FileInputStream(excelFile));  		Sheet sheet=workBook.getSheetAt(0);//得到第一个sheet  		excelWorkSheet=new ExcelWorkSheet<JCZXFixRec>();  		Row firstRow=sheet.getRow(0);//得到第一行,也就是列名  		Iterator<Cell> iterator=firstRow.cellIterator();//得到第一行的一个迭代器  		List<String> cellNames=new ArrayList<String>();  		//将列名取出来  		while(iterator.hasNext()){  			cellNames.add(iterator.next().getStringCellValue());  		}  		excelWorkSheet.setColumns(cellNames);  		JCZXFixRec jczxFixRec=null;  		//遍历各列数据,并将其取出来放到excelWorkSheet中  		for(int i=1;i<=sheet.getLastRowNum();i++){  			Row row=sheet.getRow(i);  			jczxFixRec=new JCZXFixRec();  			jczxFixRec.setUnitName(row.getCell(0).getStringCellValue());  			jczxFixRec.setItemName(row.getCell(1).getStringCellValue());  			jczxFixRec.setFixSituation(row.getCell(3).getStringCellValue());  			excelWorkSheet.getData().add(jczxFixRec);  		}  		for(int j=0;j<excelWorkSheet.getData().size();j++){  			JCZXFixRec rec=excelWorkSheet.getData().get(j);  			System.out.println(rec.getItemName());//或者插入到数据库中  		}  		return "success";  	}  	  	//判断文件类型创建Workbook对象      public Workbook createWorkbook(InputStream is) throws IOException{      	if(excelFileFileName.toLowerCase().endsWith("xls")){      		return new HSSFWorkbook(is);      	}      	if(excelFileFileName.toLowerCase().endsWith("xlsx")){      		return new XSSFWorkbook(is);      	}      	return null;      }    	public File getExcelFile() {  		return excelFile;  	}  	public void setExcelFile(File excelFile) {  		this.excelFile = excelFile;  	}  	public String getExcelFileFileName() {  		return excelFileFileName;  	}    	public void setExcelFileFileName(String excelFileFileName) {  		this.excelFileFileName = excelFileFileName;  	}    	public ExcelWorkSheet<JCZXFixRec> getExcelWorkSheet() {  		return excelWorkSheet;  	}    	public void setExcelWorkSheet(ExcelWorkSheet<JCZXFixRec> excelWorkSheet) {  		this.excelWorkSheet = excelWorkSheet;  	}  	  }  

示列中只是将excel文件中的数据取出来,然后将其打印出来了,要执行插入到数据库,我们可以编写我们处理的dao类,将其插入到数据库中即可,这样我们的数据就轻松的从excel文件中导入到数据库里面了,大家可以尝试一下!