- html(写的比较简单没用任何样式哈哈哈):
<input type="file" name="file" id="file" contenteditable="false"/></input>
<input id="dic_upload_excle" type="button" value="上传">
- js:
var dic_upload_excle=$("#dic_upload_excle");
dic_upload_excle.on("click",function(){
importExp();
});
//导入文件
function importExp() {
var formData = new FormData();
var name = $("#file").val();
if(name==null||name==""){
alert("请选择文件");
return;
}
//这里是把文件取出来存进去
formData.append("file",$("#file")[0].files[0]);
formData.append("name",name);
console.log(name);
$.ajax({
url : "#路径",
type : 'POST',
async : false,
data : formData,
// 告诉jQuery不要去处理发送的数据
processData : false,
// 告诉jQuery不要去设置Content-Type请求头
contentType : false,
beforeSend:function(){
console.log("正在进行,请稍候");
},
success : function(responseStr) {
alert(responseStr);
}
});
}
- java代码:
@RequestMapping("/uploadStudent")
@ResponseBody
public void uploadStudent(HttpServletRequest request,HttpServletResponse response ){
InputStream input=null;
//创建一个学生集合,用来装excle表格的数据
List<Student> list=new ArrayList<Student>();
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar calendar = Calendar.getInstance();
try {
//拿到文件
MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
MultipartHttpServletRequest multipartRequest = resolver.resolveMultipart(request);
MultipartFile file = (MultipartFile) multipartRequest.getFile("file");
//创建输入流对象
input=file.getInputStream();
//创建文件代替excle
HSSFWorkbook wb=new HSSFWorkbook(input);
//取到第一页
HSSFSheet sheet=wb.getSheetAt(0);
//获取总行数
int rows=sheet.getLastRowNum();
//获取表头行
HSSFRow firstRow=sheet.getRow(0);
//获取总列数
int cells=firstRow.getPhysicalNumberOfCells();
//创建一个数组代替一列中所有的值
String [] str=new String[cells];
for (int i = 0; i < rows; i++) {
//创建学生对象,用来装每一行的数据
Student inObject=new Student();
//取到某一行,从第二行开始,因为第一行是表头,循环行
HSSFRow row=sheet.getRow(i+1);
//判断一行中的所有单元格是否都为空
if(ExcleUtil.isRowEmpty(row)){
//不做操作
}else{
//从第二列开始,因为第一列是编号,循环列
for (int j=0;j<row.getLastCellNum();j++) {
if(row.getCell(j+1)!=null){
//判断是否是数值类型
if(row.getCell(j+1).getCellType()==0){
//判断excle单元格是否为日期类型
if(HSSFDateUtil.isCellDateFormatted(row.getCell(j+1))){
//因为取出来是Date类型所以加上+""转成String
str[j]=row.getCell(j+1).getDateCellValue()+"";
}else{
//将单元格数据类型转成String(注意:这里我都是直接转成String,如果有复杂数据建议不要这样)
row.getCell(j+1).setCellType(HSSFCell.CELL_TYPE_STRING);
//接收单元格的值
str[j]=row.getCell(j+1).getStringCellValue();
}
}else{
//将单元格数据类型转成String
row.getCell(j+1).setCellType(HSSFCell.CELL_TYPE_STRING);
//接收单元格的值
str[j]=row.getCell(j+1).getStringCellValue();
}
//单元格为空时,直接给空字符串
}else{
str[j]="";
}
}
//将学生对象放入学生集合
list.add(inObject);
}
}
for(Student item :list){
//调用service循环添加
service.add(item);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(input!=null){
try {
//关闭文件流
input.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
以上就是整个流程,有什么问题可以评论哟。