jsp實現Excel文件導入到MySQL數據庫中

此步驟須要藉助jspsmartupload.jar,poi_3.2.jar和jxl.jar包
1.在jsp界面中:java

<form id="file_form" action="servlet/InStaff?type=excToMqsql"
          enctype="multipart/form-data" method="post">
            <input type="file" name="file" id="file_input">
            <input type="submit" value="導入數據" class="file">
        </div>
    </form>

2.對應的servlet的代碼:
須要先上傳文件,web

public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setCharacterEncoding("utf-8");
        String type = request.getParameter("type");
        if (type.equals("excToMqsql")) {
            /* *先對文件進行上傳,代碼以下 */
            SmartUpload su = new SmartUpload();
            su.initialize(this.getServletConfig(), request, response);
            // 設定容許上傳的文件(經過擴展名限制)
            su.setAllowedFilesList("xls,xlsx");
            try {
                su.upload();
                Files files = su.getFiles();
                String temp = "";
                for (int i = 0; i < files.getCount(); i++) {
                    File file = files.getFile(i);
                    temp = "/upload/staff.xls";//將上傳的文件放在根目錄下的upload文件夾下並命名爲固定的文件名
                    file.saveAs(temp, SmartUpload.SAVE_VIRTUAL);//將文件進行上傳
                }
                System.out.println("上傳成功!");
                /* *文件上傳成功後,將調用文件導入的方法; */
                InStaff es = new InStaff();//建立自身對象;
                es.getDate(request, response);//調用導入Excel數據的方法;

                // ExcelToMySql(request, response);
            } catch (SmartUploadException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    // ------------------------------------------
    //導入Excel信息的方法
    // ----------------------------------------
    public void getDate(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String errMessage = null;
        boolean flags=false;

        List liststu = new ArrayList();
        // 找到上傳後的文件目錄,並建立IO流
        java.io.File f = new java.io.File(request.getSession().getServletContext().getRealPath("")+"\\upload\\staff.xls");
        InputStream is = new FileInputStream(f);
        try {
            // 建立工做簿
            Workbook wb = Workbook.getWorkbook(is);
            // 建立工做表
            jxl.Sheet sheet = wb.getSheet(0);
            String content = null;
            for (int i = 1; i < sheet.getRows(); i++) {
                staffBean staff = new staffBean();
                for (int j = 0; j < sheet.getColumns(); j++) {
                    content = sheet.getCell(j, i).getContents();
                    // System.out.print(content);
                    if (staff.getName() == null)//
                    {
                        staff.setName(sheet.getCell(j, i).getContents());
                        continue;
                    }
                    if (staff.getIdcard() == null) {
                        staff.setIdcard(sheet.getCell(j, i).getContents());
                        continue;
                    }
                }
                flags=getStaffInfo(staff);
            }
            /* * 文件導入成功後進入提示界面 */
            if(flags){
                System.out.println("總表導入成功!");
                response.sendRedirect("CompareServlet?type=show");
            }else{
                System.out.println("總表未導入成功!");
                errMessage = "導入總表未成功,請從新導入!";
                request.setAttribute("error", errMessage);
                request.getRequestDispatcher("../tips.jsp").forward(request,
                        response);
            }
        } catch (BiffException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /* *sql的添加方法,此方法也能夠寫到Dao文件,而後再servlet中調用; */
    public boolean getStaffInfo(staffBean staff) {
        boolean flag=false;
        Connection conn = null;
        PreparedStatement pt = null;
        ResultSet rs = null;
        String sql = "insert into staff(name,idcard) values (?,?)";
        jdbcDtiver jdbc = new jdbcDtiver();
        conn = jdbc.Driver();
        try {
            pt = conn.prepareStatement(sql);
            pt.setString(1, staff.getName());
            pt.setString(2, staff.getIdcard());
            int n=pt.executeUpdate();
            if(n>0){
                flag=true;
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return flag;
    }

Excel文件導入代碼,但願對你們有用sql