记录-java(jxl) Excel导入数据库

Posted uimcc.com#UNCLE CHEN#

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录-java(jxl) Excel导入数据库相关的知识,希望对你有一定的参考价值。

 

本内容主要包括(文件上传、excel2003数据导入数据库)excel导入数据库功能需要jxl  jar包支持

 

下面是文件上传的前端测试代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form action="getAllByExcel" method="post" enctype="multipart/form-data">
        <input type="file" name="file" >
        <input type="submit" value="上传">
    </form>
</body>
</html>

 

下面控制类用于excel文件上传到服务器

@SuppressWarnings("unchecked")
    @RequestMapping(value="getAllByExcel" ,method = RequestMethod.POST)
    public Object getAllByExcel(HttpServletRequest request,HttpServletResponse response, ModelMap model){
        MultipartHttpServletRequest mulltipartRequest=(MultipartHttpServletRequest)request;
        
        MultipartFile files=mulltipartRequest.getFile("file");
        //得到上传服务器路径
        String path=request.getSession().getServletContext().getRealPath("/WEB-INF/res/upload");
        String fileName=files.getOriginalFilename();
        
        try {
            
          InputStream inputStream=files.getInputStream();
            
            byte[] b = new byte[1048576];
            int length = inputStream.read(b);
            path += "\\" + fileName;
            // 文件流写到服务器端
            FileOutputStream outputStream = new FileOutputStream(path);
            outputStream.write(b, 0, length);
            inputStream.close();
            outputStream.close();
          //解析excel
            List<Map<String, Object>> lists=CommonUtil.getAllExcel(path);

 

此功能需要导入jxl相关jar包,此方法提供excel路径返回List<Map<String, Object>>

//获取excel数据
    public static List<Map<String, Object>> getAllExcel(String url){
        List<Map<String, Object>> models=new ArrayList<Map<String, Object>>();
        try {

            File filse=new File(url);
            Workbook rwb=Workbook.getWorkbook(filse);
            Sheet sheet=rwb.getSheet(0);
            int clos=sheet.getColumns(); //获取列数
            int rows=sheet.getRows();//获取行数
            
            String[] heads =new String[clos];//保存所有的key值
            
            for (int i = 0; i < rows; i++) {
                Map<String, Object> mp =new HashMap<String,Object>();
                for(int j=0;j<clos;j++){
                    if(i == 0 ){
                        heads[j] =     sheet.getCell(j, i).getContents();//获取所有key值
                    }
                    else{
                        mp.put(heads[j], sheet.getCell(j, i).getContents());//获取每行value值
                    }
                }
                //如果map不为空则添加到list集合
                if (!mp.isEmpty()) {
                    models.add(mp);
                }
                
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
        return models;
    }

 

以上是关于记录-java(jxl) Excel导入数据库的主要内容,如果未能解决你的问题,请参考以下文章

jxl读取excel导入到数据库,报错java.lang.NoClassDefFoundError: jxl/read/biff/BiffException

java jxl 导出excel出现代码走完 页面不出现下载对话框

Java jxl导入excel文件,导入的数字身份证号码手机号变成了科学计数法,解决方案

java jxl 大量数据写入excel,比如上千万条

导入导出Excel的Java工具类ExcelUtil

怎么用java程序把excel导入到mysql数据库