栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

记一次需求:jsp页面选择本地excel文件(.xls)第一列数据返回前端

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

记一次需求:jsp页面选择本地excel文件(.xls)第一列数据返回前端

导入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的编译差别,""要写成"\"

暂时需求中注意事项就先这么多

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/531200.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号