精华内容
下载资源
问答
  • poi导入excel到数据库
    2021-11-26 11:12:01

    实现逻辑:

    • 第一步我们需要获取excel的数据,然后把每行的数据用一个对象存起来,然后都添加到list中。(读取excel流程是首先读取工作簿,然后读取shell,然后服务行row,然后读取column列,在一个个set到对象中。)
    • 第二步就是链接数据库编写批量新增的方法,传入list。
    • 第三步成功失败逻辑判断,成功返回成功条数,失败返回失败信息即可。

    参考链接

    更多相关内容
  • java运用poiexcel数据导入到oracle数据库中,上场内容未自己写的小demo,可下载查看,不清楚的可以联系我进行帮助。
  • 写一个excelInput.jsp页面(struts)导入文件:ExcelInputAction.java页面if(action != null && action.equals("addSave")){String path = null;String myFileName = null;FormFile file = eForm.getExcel_file...

    写一个excelInput.jsp页面(struts)

    导入文件:

    ExcelInputAction.java页面

    if(action != null && action.equals("addSave")){

    String path = null;

    String myFileName = null;

    FormFile file = eForm.getExcel_file();//取得上传的文件

    System.out.println("11111111111111111111111111111111FormFile----111"+file);

    try {

    java.io.InputStream stream = file.getInputStream();//把文件读入

    String filePath = request.getRealPath("/");//取当前系统路径

    ByteArrayOutputStream baos = new ByteArrayOutputStream();

    OutputStream bos = new FileOutputStream(filePath + "/ExcelInput/" +

    time);//建立一个上传文件的输出流

    myFileName = file.getFileName();//上传的文件名

    path = filePath+"/ReportInput/"+myFileName;//可以自己起一个文件名保存到指定的目录,现在用原文件名

    int bytesRead = 0;

    byte[] buffer = new byte[8192];

    while ( (bytesRead = stream.read(buffer, 0, 8192)) != -1) {

    bos.write(buffer, 0, bytesRead);//将文件写入服务器

    }

    bos.close();

    stream.close();

    }catch(Exception e){

    System.err.print(e.getMessage());

    }

    message = logic.readExcelToSql(path, myFileName, eForm, userId, userLevel, userName, ip);

    }

    ExcelInputLogic.java

    public String readExcelToSql(String url, String myFileName, ExcelImportForm form, String userId, String userLevel, String userName, String ip){

    POIFSFileSystem fs = null;

    HSSFWorkbook wb = null;

    String message = "";

    FileInputStream stream = null;

    try {

    // str取得excel.xls路径

    stream = new FileInputStream(url);

    fs = new POIFSFileSystem(stream);

    wb = new HSSFWorkbook(fs);

    } catch (Exception e) {

    System.out.println("poi ExcelImportLogic---"+e.getMessage());

    if(fs == null) {

    return "";

    }

    } finally {

    try {

    stream.close();

    } catch (Exception ee) {

    ee.getMessage();

    }

    }

    HSSFSheet sheet = wb.getSheetAt(0);

    HSSFRow row = null;

    HSSFCell cell = null;

    row = sheet.getRow(0);

    cell = row.getCell((short) 0);

    String type = cell.getStringCellValue();//根据文件头判断,文件上传是否正确

    if(type.equals("Excel导入")){

    message = readExcelToSql(sheet)

    }

    return message;

    }

    //调用ExcelInputLogic.java的另一个方法

    public String readExcelToSql(HSSFSheet sheet){

    String message = null;

    DbConnection db = null;

    int err = 0;

    int rowNum = 0;

    int count = 0;

    try{

    db = new DbConnection();

    HSSFRow row = null;

    HSSFCell cell = null;

    // 名称列。注意:文本列要定义变量为String类型,而数值列要定义变量为Double类型

    String name = "";

    // 数值列

    double qy_capital;

    for (i = 4; i <= rowNum; i++) {//从第5行读取数据

    System.out.println("i = "+i);

    row = sheet.getRow(i);

    if(row == null) {//过滤掉Excel的空行

    continue;

    }

    //1

    cell = row.getCell((short) 0);

    if(cell == null || cell.getStringCellValue()).trim() == ""){//判断是否为空

    name = "";

    }else{

    name = cell.getStringCellValue();//不为空时取值

    }

    //2

    cell = row.getCell((short) 1);

    if(cell == null) {//数值列不能为空,如果为空赋值0

    numberColumn = 0;

    }else if(cell.getCellType() == HSSFCell.CELL_TYPE_STRING){

    message = "";

    db.rollup();

    return message;

    }else {

    qy_capital = cell.getNumericCellValue();

    }

    String sql = "insert into reports(name, numberColumn) values('"+name+"',"+numberColumn+")";

    db.executeUpdate(sql);

    }

    db.commit();

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    db.close();

    }

    return message;

    }

    对应的Excel表为aaa.xls

    展开全文
  • poiexcel导入数据库

    2019-04-07 01:04:44
    NULL 博文链接:https://xph.iteye.com/blog/1562678
  • 利用HTML导入excel表中的全部数据到数据库 2.导入maven依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.0.0</...

    1.业务描述

    利用HTML导入excel表中的全部数据到数据库
    Gitee地址:链接: https://gitee.com/ziac/ls.

    最好先把准备插入的excel表的格式改一下(如代表和价格)
    在这里插入图片描述

    2.导入maven依赖

    	<dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>5.0.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>5.0.0</version>
            </dependency>
    

    3.前端代码

    创建merch-upload前端页面来作为上传数据测试页面,具体就是需要注意的是:
    ①路径;②文件的类型为file; ③提交的type为submit属性

    <html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="multipart/form-data"; charset="UTF-8">
        <title>上传商品信息文件</title>
    </head>
    <body>
        <h1 th:inlines="text">文件上传</h1>
        <form th:action="@{/exceImport}" method="post" enctype="multipart/form-data">
            <p>选择文件: <input type="file" name="file"/></p>
            <p><input type="submit" value="提交"/></p >
        </form>
    </body>
    </html>
    </body>
    </html>
    

    4.后端代码

    首先我们需要一个封装数据的pojo对象(这里用的注解还要导入lombok依赖)

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @Accessors(chain = true)
    @ToString
    public class Merch {
        private Integer id;
        private String name;
        private String packaging;   //商品包装类型
        private String factory;     //厂家名称
        private Double price;       //价格
        private String code;        //代码
    
        private Integer stock;      //库存数
    }
    

    4.1.后端业务实现:其一

    前端刚才提交的文件会找对应的路径进行提交

    	@Autowired
        private MerchService merchService;
    
    	/*
            导入excel全部的数据到数据库
         */
        @RequestMapping(value = {"/exceImport"},method = RequestMethod.POST)
        @ResponseBody
    

    controller 具体业务(这是我同事的代码,好像是没问题的)

    public String uploadImg(@RequestParam("file") MultipartFile file,HttpServletRequest request) {
            file.getContentType();
            file.getOriginalFilename();
            if (file.isEmpty()) {
                return "文件为空!";
            }
            try {
                //根据路径获取这个操作excel的实例
                HSSFWorkbook wb = new HSSFWorkbook(file.getInputStream());
                //根据页面index 获取sheet页
                HSSFSheet sheet = wb.getSheetAt(0);
                //实体类集合
                List<Merch> importDatas = new ArrayList<>();
                HSSFRow row = null;
                //循环sesheet页中数据从第二行开始,第一行是标题
                for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {
                    //获取每一行数据
                    row = sheet.getRow(i);
                    Merch data = new Merch();
    //                data.setId(Integer.valueOf((int) row.getCell(0).getNumericCellValue()));
                    data.setName(row.getCell(1).getStringCellValue());
                    data.setCode(row.getCell(2).getStringCellValue());
                    data.setFactory(row.getCell(3).getStringCellValue());
                    data.setPrice(row.getCell(4).getNumericCellValue());
                    data.setPackaging(row.getCell(5).getStringCellValue());
                    data.setStock(Integer.valueOf((int) row.getCell(6).getNumericCellValue()));
                    importDatas.add(data);
                }
    
                //循环展示导入的数据,实际应用中应该校验并存入数据库
                for (Merch imdata : importDatas) {
                    merchService.saveMerch(imdata);
                    System.out.println("ID:"+imdata.getId()+" name:"+imdata.getName()+" Code:"+imdata.getCode()+" Factory:"+imdata.getFactory()
                            +"Pagkage:"+imdata.getPackaging()+"Price:"+imdata.getPrice()+"Stock:"+imdata.getStock());
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return "导入成功!";
        }
    

    4.2.后台业务实现:其二

    controller 具体业务(这段代码是我的,但是有个小bug,生成的临时文件不能删除!)
    id 我数据库设置的是自增所以不需要写上,避免混乱

    public String uploadAndBatchImport(@RequestParam("file")MultipartFile file, HttpServletRequest request) {
            FileInputStream is;
            File myFile;
            try {
                myFile = new File("G:\\Google" + UUID.randomUUID() + file.getOriginalFilename());
                file.transferTo(myFile);
                is = new FileInputStream(myFile);
    
                List<Merch> merchs = new ArrayList<>();
                //编写解析代码逻辑
                //基于 .xls 格式解析 HSSF
                //1. 加载Excel文件对象
                HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
    
                //2. 读取一个sheet
                HSSFSheet sheet = hssfWorkbook.getSheetAt(0);//获取第一个sheet对象
    
                //3. 读取sheet中每一行,一行数据对应一个区域对象
                for (Row row : sheet) {
                    //3.1 第一行表头 跳过
                    if (row.getRowNum() == 0) {
                        //第一行 跳过
                        continue;
                    }
                    //跳过空值的行,要求此行作废
    //                if (row.getCell(0) == null
    //                    || StringUtils.isBlank(row.getCell(0).getStringCellValue())) {
    //                    continue;
    //                }
                    Merch merch = new Merch();
                    //3.2 封装数据
                        //获取单元格
    //                    Cell cell = row.getCell(0);
                        Cell cell6 = row.getCell(6);
                        Cell cell2 = row.getCell(2);
                        //设置单元格类型
    //                    cell.setCellType(CellType.STRING);
                        cell2.setCellType(CellType.STRING);
                        cell6.setCellType(CellType.STRING);
    //                merch.setId(Integer.valueOf(cell.getStringCellValue()));              //序号Id
                    merch.setName(row.getCell(1).getStringCellValue());                 //名称
                    merch.setCode(row.getCell(2).getStringCellValue());                 //代表
                    merch.setPackaging(row.getCell(3).getStringCellValue());            //包装
                    merch.setPrice(row.getCell(4).getNumericCellValue());               //价格
                    merch.setFactory(row.getCell(5).getStringCellValue());              //生产厂家
                    merch.setStock(Integer.valueOf(cell6.getStringCellValue()));           //库存
                    merchs.add(merch);
                }
    
                //System.out.println(merchs);
    
                //4. 调用业务层,添加数据
                for (Merch data: merchs){
                    merchService.saveMerch( data);
                }
    
                //5. 删除文件
                myFile.delete();
    
                return "导入成功";
    //            return new ResponseEntity<Void>(HttpStatus.OK);
            } catch (Exception e) {
                //服务器错误
    //            return new ResponseEntity<Void>(HttpStatus.INTERNAL_SERVER_ERROR);
                e.printStackTrace();
            }
            return "导入失败";
        }
    

    4.3.serviceImpl层(这里就直接实现类了,都是基本的添加操作)

    	@Autowired
        private MerchDao merchDao;
        
    	@Override
        public int saveMerch(Merch merch) {
            int rows = merchDao.insertMerch(merch);
            return rows;
        }
    

    4.4.dao层或mapper层

    int insertMerch(Merch merch);
    

    与之对应的mapper.xml,写mapper.xml需要注意
    ①namespace的对应空间为你的mapper层
    ②id为你的方法名
    ③增删改的resultType的返回值大都是int,可以不写

    	<insert id="insertMerch">
            insert into merch
            (name,code,factory,packaging,price,stock)
            values
            (#{name},#{code},#{factory},#{packaging},#{price},#{stock})
        </insert>
    

    5.总结

    都是先获取这个操作excel的实例,然后再获取第一个sheet对象,循环遍历将得到的数据封装到List集合里。
    再将List集合遍历插入到数据库进行持久化操作。

    展开全文
  • java中使用poi导入Excel表格到数据库

    千次阅读 2022-01-04 16:54:36
    java中使用poi导入Excel表格到数据库

    一.pom.xml中导入所需要的依赖:

            <!--读取excel文件-->
            //操作03版的Excel,即以.xls结尾的excel表
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>3.17</version>
            </dependency>
            //操作07版的Excel,即以.xlsx结尾的Excel表
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>3.17</version>
            </dependency>

    二.编写前端代码:

        //HTML:       
        <input id="articleImageFile" name="excelFile" type="file" class="form-control" style="width: 300px; display: inline;" />
        <a class="btn btn-warning" id = "import" onclick="importExcel()" shiro:hasPermission="system:student:import">
        <i class="fa fa-upload"></i> 导入</a>
    //js代码:
    <script>
     function importExcel() {
                var formData = new FormData();
                var name = $("#articleImageFile").val();
                formData.append("file", $("#articleImageFile")[0].files[0]);
                formData.append("name", name);//这个地方可以传递多个参数
                $.ajax({
                    url: '/system/student/importExcel',               
                    type: 'POST',
                    async: false,
                    data: formData,
                    // 告诉jQuery不要去处理发送的数据
                    processData: false,
                    // 告诉jQuery不要去设置Content-Type请求头
                    contentType: false,
                    beforeSend: function () {
                        console.log("正在进行,请稍候");
                    },
                    success: function (responseStr) {
                        if (responseStr == "上传成功") {
                            alert("导入成功");
                        } else {
                            alert("导入失败");
                        }
                    }
                });
            }
    
        </script>
    三.controller层代码:
    @PostMapping("/importExcel")
    @ResponseBody
    public String importExcel(@RequestParam("file") MultipartFile file, HttpServletRequest request, HttpServletResponse response) {
            System.out.println("file"+file.getSize());
            try {
                // @RequestParam("file") MultipartFile file 是用来接收前端传递过来的文件
                // 1.创建workbook对象,读取整个文档
                InputStream inputStream = file.getInputStream();
                //POIFSFileSystem poifsFileSystem = new POIFSFileSystem(inputStream);
                XSSFWorkbook wb = new XSSFWorkbook(inputStream);
                // 2.读取页脚sheet
                XSSFSheet sheetAt = wb.getSheetAt(0);
    
                // 3.循环读取某一行
                int index = 0;
                for (Row row : sheetAt) {
                    // 4.读取每一行的单元格
                    if (index == 0) {
                        index++;
                        continue;
                    }
                    //创建一个学生对象
                    SysStudent student = new SysStudent();
    
                    //将Excel表中单元格的值与学生对象的值对应
                    student.setName(row.getCell(0).getStringCellValue());
                    //因为学号是数字,Excel默认是数字类型,我的数据库是字符串类型,所以需要设置下类型
                    row.getCell(1).setCellType(CellType.STRING);
                    student.setStuId(row.getCell(1).getStringCellValue());
                    student.setIdentity(row.getCell(2).getStringCellValue());
                    student.setDescription(row.getCell(3).getStringCellValue());
                    student.setProvince(row.getCell(4).getStringCellValue());
                    sysStudentService.insertSysStudent(student);
    
    
                    row.getCell(0).setCellType(CellType.STRING);
                    String stringCellValue = row.getCell(0).getStringCellValue();
                    row.getCell(1).setCellType(CellType.STRING);
                    String stringCellValue2 = row.getCell(1).getStringCellValue();
                    row.getCell(2).setCellType(CellType.STRING);
                    String stringCellValue3 = row.getCell(2).getStringCellValue();
                    row.getCell(3).setCellType(CellType.STRING);
                    String stringCellValue4 = row.getCell(3).getStringCellValue();
                    row.getCell(4).setCellType(CellType.STRING);
                    String stringCellValue5 = row.getCell(4).getStringCellValue();
    
    
                    // 写多少个具体看大家上传的文件有多少列.....
                    // 测试是否读取到数据,及数据的正确性
                    System.out.println(stringCellValue);
                    System.out.println(stringCellValue2);
                    System.out.println(stringCellValue3);
                    System.out.println(stringCellValue4);
                    System.out.println(stringCellValue5);
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return "上传成功";
        }

    转自:java中使用poi导入Excel表格 - li&り&Lee - 博客园 (cnblogs.com)

    展开全文
  • IDEA中开发SpringBoot项目时需要将Excel模板中数据导入到数据库Excel模板如下 实现思想 首先将模板上传服务器中某路径,并将当前路径存储,然后使用POI自带的 工具类获取sheet以及行数以及每个cell,...
  • 主要介绍了Java实现批量导入excel表格数据到数据库中的方法,结合实例形式详细分析了java导入Excel数据到数据库的具体步骤与相关操作技巧,需要的朋友可以参考下
  • java基于POIExcel表格数据导入到数据库
  • 1、下载需要的jar包:POI Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。本例中主要使用其中的两个包:HSSF提供读写Microsoft Excel XLS(2003版本)格式...
  • spring boot+mybatis plus+easy poi实现数据库导出成excelexcel导入到数据库
  • ![图片说明](https://img-ask.csdn.net/upload/201510/15/1444890842_121398.png) if条件判断也没起作用,如何才能正确判断
  • 文章目录1. 效果2. 思路3. 项目结构4. 源码4.1 `pom.xml`添加相关依赖4.2 `application.properties`相关配置4.3 `Bill.java`实体类4.4 ...使用PoiPoi-ooxml实现Excel解析 使用MySQL与MyBatis实现数据库连接与操作
  • 主要给大家介绍了关于在java poi导入Excel通用工具类的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
  • POI实现Excel导入到数据库 1.创建maven工程,工程结构如下 2.导入依赖和编写配置文件 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-parent</...
  • http://blog.csdn.net/meng564764406/article/details/52444644 http://blog.csdn.net/meng564764406/article/details/52426634 源码
  • 使用poi导入excel文件数据到数据库

    千次阅读 2016-07-14 09:28:55
    excel 文件 " ) ;   } Workbook workbook = WorkbookFactory.create(multipartFile.getInputStream()) ;   Sheet sheet = workbook.getSheetAt( 0 ) ; int rows = sheet.getLastRowNum() ; int ...
  • 主要为大家详细介绍了java实现批量导入Excel表格数据到数据库,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • ![图片说明](https://img-ask.csdn.net/upload/201510/08/1444290580_466806.png) ![图片说明](https://img-ask.csdn.net/upload/201510/08/1444290660_809106.png)
  • poi做的Excel导入数据库表工具

    热门讨论 2012-03-14 21:28:15
    编写语言:该小工具是用纯JAVA Swing 编写的; 开发原因:有一次我发现有同事因为要根据客户提供的Excel, 要一条一条数据的通过系统录入到数据库表中,...开发一个软件可以直接将Excel中的数据导入到数据库表中。
  • 原因:如果Excel里面有格式为:xx年xx月xx日,或者类似的中文的日期单元格,在这里进行判断:HSSFDateUtil.isCellDateFormatted(row.getCell(3)) ,返回的结果就为false 处理方式: SimpleDateFormat sdf =new ...
  • Apache POI导入数据到数据库 Apache POI简介 在Maven工程中导入依赖 在页面添加上传文件组件,配置文件 使用工具类将上传文件的数据导入到数据库 Apache POI简介 Apache POI是用Java编写的免费开源的跨平台的Java...
  • POI导入excel到数据库及遇到空值处理

    千次阅读 2018-07-11 16:39:41
    //从0开始4列 for(int c=0;c;c++){ String li = null; try { row.getCell(c).setCellType(Cell.CELL_TYPE_STRING); li =row.getCell(c).getStringCellValue(); list.add(li);...
  • SpringBoot + Vue实现导入Excel到数据库与导出数据库数据Excel表格 一、导入excel表格到数据库 (一)后端实现 1.导入POI依赖 <!--导入POI依赖,ms office文件生成--> <dependency> <groupId>...
  • 利用 Apache POIexcel 操作并存入MySQL数据库的一个小demo。
  • 使用poiexcel文件导入mysql数据库

    千次阅读 2022-03-13 17:38:56
    在实际开发中,肯定会遇到需要维护大量数据,如果全部手动录入,肯定是很麻烦的,而且吃力不讨好,花了很多时间,还很low,这里给大家整理了一个接口,需要输入文件路径,和上传文件即可将excel全部录入数据库,如有...
  • //导入excel @RequestMapping(value = "/import", method=RequestMethod.POST) public JsonDto importExcel(@RequestParam(value="file",required = false) MultipartFile file, HttpServlet...
  • 数据库中有多表,导入Excel是如何判断应该导入哪个表中的?
  • } } } } //将数据插入mysql数据库中 String[] val = value.split(","); Cucustomer cu = new Cucustomer(); cu.setCucustomerclass(0); cu.setCucustomersource(0);//来自网页 cu.setCucustomertype(0); cu....
  • 一篇读懂利用poiExcel导入到数据库,将数据库导出到Excel前言一、pandas是什么?使用步骤1.引入pom依赖2.写poi工具类3.写XXXController层4.写XXXService层5.写XXXServiceImpl实现层6.写XXXMapper7.写XXXMapper.xml...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,383
精华内容 3,353
关键字:

poi导入excel到数据库