前台jsp页面:
<form id="uploadForm" action="${ctx}/call/upload" method="post" enctype="multipart/form-data">
<p style="font-size: 30px">导入大白使用者信息</p>
<table>
<tr>
<td style="font-size: 20px">上传文件:</td>
<td><input type="file" name="file"></td>
</tr>
<tr>
<td><input type="submit" value="提 交" ></td>
</tr>
</table>
</form>
controller 层:
@RequestMapping(value = "upload", method = RequestMethod.POST)
public String batchimport(HttpServletRequest request){
List<Student> inds=new ArrayList<Student>();//创建保存数据的list
try
{
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//输入流
InputStream in =null;
MultipartFile file = multipartRequest.getFile("file");
if(file.isEmpty())
{
log.info("文件不存在!");
}
String filename=file.getOriginalFilename();
in = file.getInputStream();
//得到excel
Workbook wb = null;
String fileType = filename.substring(filename.lastIndexOf("."));
if((".xls").equals(fileType))
{
wb = new HSSFWorkbook(in); //2003-
}else if((".xlsx").equals(fileType))
{
wb = new XSSFWorkbook(in); //2007+
}else
{
log.info("文件格式错误!");
}
//得到sheet
Sheet sheet = wb.getSheetAt(0); //默认取第一个sheet
//int colsNum = sheet.getPhysicalNumberOfRows(); //获取实际的行数
int rowsNum = sheet.getLastRowNum();//
for(int j=1; j<rowsNum+1;j++) //第一行为表头,所以从第二行开始
{// getLastRowNum,获取最后一行的行标
Row row =sheet.getRow(j);
if (row != null)
{
Student ind=new Student();
ind.setId(row.getCell(0).toString());
ind.setName(row.getCell(1).toString());
ind.setSex(row.getCell(2).toString());
ind.setAge(row.getCell(3).toString());
/*ind.setDatetime(row.getCell(4).toString());*/
/** 将时间戳转化为日期*/
String datetime = "";
Cell datecell = row.getCell(4);
if(0 == datecell.getCellType()) {
if(DateUtil.isCellDateFormatted(datecell)) {
Date date = datecell.getDateCellValue();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
datetime = format.format(date);
}
}
/*System.out.println(datetime);*/
ind.setDatetime(datetime);
inds.add(ind);
}
}
/* System.out.println(inds);*/
/* wb.clonse(); */
} catch (IOException e)
{
e.printStackTrace();
}
callService.addExcel(inds);
return "redirect:/user";
}
sql语句:
<insert id="addExcel" parameterType="user" >
insert into t_user (name,sex,age,datetime)
values
<foreach collection="inds" item="item" index="index" separator=",">
(#{item.name}, #{item.sex}, #{item.age},#{item.datetime})
</foreach>
<form id="uploadForm" action="${ctx}/call/upload" method="post" enctype="multipart/form-data">
<p style="font-size: 30px">导入大白使用者信息</p>
<table>
<tr>
<td style="font-size: 20px">上传文件:</td>
<td><input type="file" name="file"></td>
</tr>
<tr>
<td><input type="submit" value="提 交" ></td>
</tr>
</table>
</form>
controller 层:
@RequestMapping(value = "upload", method = RequestMethod.POST)
public String batchimport(HttpServletRequest request){
List<Student> inds=new ArrayList<Student>();//创建保存数据的list
try
{
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//输入流
InputStream in =null;
MultipartFile file = multipartRequest.getFile("file");
if(file.isEmpty())
{
log.info("文件不存在!");
}
String filename=file.getOriginalFilename();
in = file.getInputStream();
//得到excel
Workbook wb = null;
String fileType = filename.substring(filename.lastIndexOf("."));
if((".xls").equals(fileType))
{
wb = new HSSFWorkbook(in); //2003-
}else if((".xlsx").equals(fileType))
{
wb = new XSSFWorkbook(in); //2007+
}else
{
log.info("文件格式错误!");
}
//得到sheet
Sheet sheet = wb.getSheetAt(0); //默认取第一个sheet
//int colsNum = sheet.getPhysicalNumberOfRows(); //获取实际的行数
int rowsNum = sheet.getLastRowNum();//
for(int j=1; j<rowsNum+1;j++) //第一行为表头,所以从第二行开始
{// getLastRowNum,获取最后一行的行标
Row row =sheet.getRow(j);
if (row != null)
{
Student ind=new Student();
ind.setId(row.getCell(0).toString());
ind.setName(row.getCell(1).toString());
ind.setSex(row.getCell(2).toString());
ind.setAge(row.getCell(3).toString());
/*ind.setDatetime(row.getCell(4).toString());*/
/** 将时间戳转化为日期*/
String datetime = "";
Cell datecell = row.getCell(4);
if(0 == datecell.getCellType()) {
if(DateUtil.isCellDateFormatted(datecell)) {
Date date = datecell.getDateCellValue();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
datetime = format.format(date);
}
}
/*System.out.println(datetime);*/
ind.setDatetime(datetime);
inds.add(ind);
}
}
/* System.out.println(inds);*/
/* wb.clonse(); */
} catch (IOException e)
{
e.printStackTrace();
}
callService.addExcel(inds);
return "redirect:/user";
}
sql语句:
<insert id="addExcel" parameterType="user" >
insert into t_user (name,sex,age,datetime)
values
<foreach collection="inds" item="item" index="index" separator=",">
(#{item.name}, #{item.sex}, #{item.age},#{item.datetime})
</foreach>