POI,servlet,jsp 实现excel文件的导入,并存到oracle数据库中

导包

在这里插入图片描述

实体类

package com.crh.bean;

import java.io.Serializable;

/**
 * @author Chrui
 * @date 2018/09/24__22:48
 */
public class ImportTitle implements Serializable {

    private String titles;
    private String terri;
    private String select1;
    private String score1;
    private String select2;
    private String score2;
    private String select3;
    private String score3;
    private String select4;
    private String score4;
//以下是省略getter/setter
}

 private List<ImportTitle> excelList = new ArrayList();
 private ImportTitle t = null;

后端代码一:读取xls文件

public void readXls(InputStream path) throws IOException {
        HSSFWorkbook hssfWorkbook = new HSSFWorkbook(path);
        // 循环工作表Sheet
        for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
            HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
            System.out.println("总行数:" + ",总列数:" + hssfSheet.getLastRowNum());
            if (hssfSheet == null) {
                continue;
            }
            // 循环行Row
            for (int rowNum = 1; rowNum < hssfSheet.getLastRowNum(); rowNum++) {
                HSSFRow hssfRow = hssfSheet.getRow(rowNum);
                if (hssfRow != null) {
                    t = new ImportTitle();
                    HSSFCell title = hssfRow.getCell(0);
                    HSSFCell select1 = hssfRow.getCell(1);
                    HSSFCell score1 = hssfRow.getCell(2);
                    HSSFCell select2 = hssfRow.getCell(3);
                    HSSFCell score2 = hssfRow.getCell(4);
                    HSSFCell select3 = hssfRow.getCell(5);
                    HSSFCell score3 = hssfRow.getCell(6);
                    HSSFCell select4 = hssfRow.getCell(7);
                    HSSFCell score4 = hssfRow.getCell(8);
                    t.setTitles(getValue(title));
                    t.setSelect1(getValue(select1));
                    t.setSelect2(getValue(select2));
                    t.setSelect3(getValue(select3));
                    t.setSelect4(getValue(select4));
                    t.setScore1(getValue(score1));
                    t.setScore2(getValue(score2));
                    t.setScore3(getValue(score3));
                    t.setScore4(getValue(score4));

                    excelList.add(t);
                }
            }
        }
    }

后端代码二:servlet下使用读取文件

  /**
     * 导入文件
     */
    private void inportTitles(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        String territoryIds = null;
        Integer territoryId = 0;
        if (territoryIds != null && !territoryIds.equals("")) {
            territoryId = Integer.valueOf(territoryIds);
        }
        response.setContentType("text/html;charset=UTF-8");
        try {
            FileItemFactory factory = new DiskFileItemFactory();
            //文件上传核心工具类
            ServletFileUpload upload = new ServletFileUpload(factory);
            //单个文件大小限制
            upload.setFileSizeMax(10 * 1024 * 1024);
            //总文件大小限制
            upload.setSizeMax(50 * 1024 * 1024);
            //对中文编码处理
            upload.setHeaderEncoding("UTF-8");

            if (ServletFileUpload.isMultipartContent(request)) {
                List<FileItem> list = upload.parseRequest(request);
                //遍历
                for (FileItem item : list) {
                    String name = item.getFieldName(); // 获取name属性的值(必须要写的,当前端的表单有text类型的数据时候),就这样获取表单的元素
                    String value = item.getString("utf-8"); // 获取value属性的值
                    if (name.equals("territory")) {
                        territoryIds = value;
                    }
                    if (!item.isFormField()) {
                        //读取文件
                        readXls(item.getInputStream());
                    }
                }
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        // 添加
     //处理添加进列表的数据
        }
    }

前端代码

<form action="${pageContext.request.contextPath}/admin/reportServlet?flag=inportTitles"
                      data-validator-option="{theme:'bootstrap', timely:2, stopOnError:true}" id="titleForm"
                      class="form-horizontal" role="form" enctype="multipart/form-data" method="post">
                    <div class="form-group">
                        <label class="control-label col-sm-3">领域:</label>
                        <div class="col-sm-5">
                            <select name="territory" id="territoryIdss" class="form-control">
                                <option selected value="0">请选择</option>
                                <c:forEach items="${territoryList}" var="terr">
                                    <option value="${terr.territoryId}">${terr.territoryName}</option>
                                </c:forEach>
                            </select>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="control-label col-sm-3">上传文件:</label>
                        <div class="col-sm-6">
                            <input id="articleImageFile" name="f1" type="file" class="form-control"
                                   style="width:100%; display: inline;"/>
                        </div>
                    </div>
                    <div class="form-inline">
                        <div class="col-sm-offset-9">
                            <input type="submit" class="btn btn-primary btn-sm" value="导入"/>
                        </div>
                    </div>

                </form>
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值