SSM框架利用POI把.xlsx表格文件导出成数据库文件

**一、搭建背景及准备条件
idea,maven3.6.0,jdk1.8,tomcat8,mysql5.6

本文章主要是把.xlsx表格文件导出成数据库文件,搭建SSM框架可以参考上一篇文章,本文章只给出数据库文件导出成.xlsx表格文件所需要的新依赖**

把下面配置文件放入Spring-mvc配置文件下

 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="10240000">  </property>
        <property name="maxInMemorySize" value="4096"></property>
    </bean>

web.xml需要添加的配置文件

<multipart-config>
      <!--临时文件的目录-->
      <location>d:/</location>
      <!-- 上传文件最大2M -->
      <max-file-size>2097152</max-file-size>
      <!-- 上传文件整个请求不超过4M -->
      <max-request-size>4194304</max-request-size>
    </multipart-config>

下面是pom.xml
导入导出所需要的依赖

  <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>3.17</version>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>3.17</version>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>3.8</version>
      <exclusions>
        <exclusion>
          <artifactId>commons-codec</artifactId>
          <groupId>commons-codec</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>3.8</version>
    </dependency>

    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.3</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.5</version>
    </dependency>
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>
    <!--开发web标配 jstl,servlet-api,junit-->
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

controller控制层:

 @RequestMapping("/importExcel")
    //@ResponseBody
    public String importExcel(MultipartFile userExcel, HttpServletRequest request, HttpSession session){
        if(userExcel == null){
            session.setAttribute("excelName", "未上传文件,上传失败!");
            return "redirect:queryUserAll";
        }
        String userExcelFileName = userExcel.getOriginalFilename();
        if(!userExcelFileName.matches("^.+\\.(?i)((xls)|(xlsx))$")){
            session.setAttribute("excelName", "文件格式不正确!请使用.xls或.xlsx后缀的文档,导入失败!");
            return "redirect:queryUserAll";
        }
        //导入
        try {
            service.importExcel(userExcel);
        } catch (IOException | InvalidFormatException e) {
            e.printStackTrace();
        }
        session.setAttribute("excelName", "导入成功!");
        return "redirect:queryUserAll";
    }

dao层接口
public void addUser(User user);

service接口

public void importExcel(MultipartFile userExcel) throws IOException, InvalidFormatException;

service实现类

@Override
    public List<User> select(User user) {
        return dao.select(user);
    }

    @Override
    public void importExcel(MultipartFile userExcel) throws IOException, InvalidFormatException {
        //获取输入流
        InputStream inputStream = userExcel.getInputStream();
        //创建读取工作簿
        Workbook workbook = WorkbookFactory.create(inputStream);
        //获取工作表
        Sheet sheet = workbook.getSheetAt(0);
        //获取总行
        int rows=sheet.getPhysicalNumberOfRows();
        if(rows>2){
            //获取单元格
            for (int i = 2; i < rows; i++) {
                Row row = sheet.getRow(i);
                User user =new User();

                try {
                    String id = row.getCell(0).getStringCellValue();
                    user.setId(Integer.parseInt(id));
                } catch (IllegalStateException e) {
                    int id=(int)row.getCell(0).getNumericCellValue();
                    user.setId(id);
                }

                String name = row.getCell(1).getStringCellValue();
                user.setName(name);
                String email = row.getCell(2).getStringCellValue();
                user.setEmail(email);
                String sex = row.getCell(3).getStringCellValue();
                user.setSex(sex);

                try {
                    String age = row.getCell(4).getStringCellValue();
                    user.setAge(Integer.parseInt(age));
                } catch (IllegalStateException e) {
                    int age=(int)row.getCell(4).getNumericCellValue();
                    user.setAge(age);
                }
                //想数据库中添加新对象
                dao.addUser(user);//方法
            }

        }

        inputStream.close();
    }

xml文件

!-- 添加用户 -->
    <insert id="addUser" parameterType="com.tzy.pojo.User">
		insert into tb_employee(id,name,email,sex,age) values(
		#{id},#{name},#{email},#{sex},#{age}	)
    </insert>

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>

```java
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <base href="<%=basePath%>">
    <title>My JSP '' starting page</title>
    <script type="text/javascript" src="jquery.js"></script>
</head>

<body>
<form action="${pageContext.request.contextPath}/user/importExcel" method="post" enctype="multipart/form-data">
    <input type="file" name="userExcel" />
    <input type="submit" value="导入">
</form>
</body>
</html>

浏览器运行界面
在这里插入图片描述
表格内容
在这里插入图片描述
数据库内容
在这里插入图片描述
到此利用SSM框架POI转成数据库文件结束啦

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值