一,web页面读取首先在把文件上传到服务器上
这里用到struts上传插件
YouActionForm youForm=(YouActionForm ) form;
FormFile file=youForm.getFile();
//这里需要注意的是request.getRealPath();已经废弃,可以通过
//下面的方法来替代
String path=request.getSession().getServletContext().getRealPath("/")+"yourPath";
File excelFile = new File(path) ;
if(!excelFile.exists()){
excelFile.mkdirs();
}
InputStream in=file.getInputStream();
OutputStream out=new FileOutputStream(path+file.getFileName());
int read=0;
byte[] buffer=new byte[1024];
while((read=in.read(buffer,0,1024))!=-1){
out.write(buffer, 0, read);
}
in.close();
out.close();
二,读取上传的excel文件数据,这里用到 jxl.jar包
Workbook wb = null;
//构造Workbook(工作薄)对象
wb=Workbook.getWorkbook(new File(path+file.getFileName()));
//获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了
Sheet[] sheet = wb.getSheets();
int sheetSize = sheet.length;
if(sheet!=null&&sheet.length>0){
// 对每个工作表进行循环
for(int i=0;i < sheetSize; i++){
// 得到当前工作表的行数
int rowNum = sheet[i].getRows();
for(int j=0;j< rowNum;j++){
if(j > 1){
//这里可new你存放数据的bean对象,每循环读取一行放入一list集合中
// 得到当前行的所有单元格
Cell[] cells = sheet[i].getRow(j);
int cellSize = cells.length;
if(cells!=null&& cellSize >0){
// 对每个单元格进行循环
for(int k=0;k<cellSize;k++){
//这里可用switch语句选择你要的数据放入bean对像中
}
}
//这里可把己存数据的bean对像放入集合中 }
}
}
}
}
三,剩下的事都是把你的数据list集合,批量插入到数据库中
注:批量插入可能造成内存溢出
//注意代码
session.save(bean);
if ( i % 20 == 0 ) {
//20,与JDBC批量设置相同
//将本批插入的对象立即写入数据库并释放内存
session.flush();
session.clear();
}