导入axios包
前端jsp页面添加选择本地文件
采用表单的上传文件组件,效果如下:
前端jsp页面编写:
证券代码选择
类型选择file,采用onChange事件,注意事件名不能与id相同.
否则会报方法is not a function错误..
方法编写如下:
var org_code="";
function selectExcel (){
let formData = new window.FormData();
formData.append('selectExcel',document.querySelector('input[type=file]').files[0]);
let options = { // 设置axios的参数
url: "/tjfx/select/excel.action",//访问地址
data: formData,
method: 'post',
headers: {
'Content-Type': 'multipart/form-data'
}
};
axios(options).then(resp => {
if (resp.data != "") {
org_code = resp.data;
console.log(org_code);
}
});
};
后端接收文件如下:
package zhcx.action;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
@Controller
@RequestMapping(value="/select")
public class SelectExcelAction {
@RequestMapping(value="/excel.action",method= RequestMethod.POST )
public @ResponseBody String selectExcel( MultipartFile selectExcel)throws Exception{
System.out.println("begin.....");
String org_codes="";
InputStream inputStream = selectExcel.getInputStream();
//获取excel表
HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
//获取excel表中的第一个sheet
HSSFSheet sheet = workbook.getSheetAt(0);
//循环每一行
for(int rowNum= 1;rowNum <= sheet.getLastRowNum();rowNum++) {
HSSFRow hssfRow=sheet.getRow(rowNum);
if(hssfRow== null) {
continue;
}
//只要第一列的数
HSSFCell hssfcell=hssfRow.getCell(0);
//转换为字符串
String s1 = hssfcell.toString();
//123456会变为123456.0,只要整数部分
String s = s1.substring(0, 6);
//表格数据符合6位数字
if(s.matches("^\d{6}$")){
org_codes = org_codes+","+s;
}
}
//去除最前面的逗号.
String org_code = org_codes.substring(1);
//关流
inputStream.close();
return org_code;
}
}
注意:接受文件类型mutipartFile需要在xml中配置解析器
注意poi的使用,2003和2007的差别,.xls和.xlsx文件转换必能直接给文件后缀,需另存为才有效
注意路径:配置的项目路径和请求路径
读取的excel中的数值为double类型
字符串匹配正则表达式:用.matches方法,注意java的编译差别,""要写成"\"
暂时需求中注意事项就先这么多



