在Java Web開發(fā)中,很多時(shí)候我們需要將Excel 數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)。本文將介紹一個(gè)基于JSP實(shí)現(xiàn)的Excel導(dǎo)入到MySQL數(shù)據(jù)庫(kù)的方法。
1.首先我們需要引入poi和mysql的jar包
<%@ page language="java" import="java.sql.*" %><%@ page import="org.apache.poi.hssf.usermodel.*"%><%@ page import="java.io.*"%><%@ page import="java.util.*"%><%@ page import="java.io.*" %>
2.在jsp頁(yè)面中有一個(gè)表單,這里我們只需用一個(gè)input來(lái)選擇我們要上傳的Excel文件
<form action="upload.jsp" method="post"enctype="multipart/form-data"><input type="file" name="file"/><input type="submit" value="導(dǎo)入"/></form>
3.在upload.jsp頁(yè)面中,我們通過(guò)文件上傳組件得到上傳的Excel文件路徑,然后遍歷Excel的每一行,將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中
<% try{ Class.forName("com.mysql.jdbc.Driver"); // MySQL的JDBC URL編寫方式:jdbc:mysql://主機(jī)名稱:連接端口/數(shù)據(jù)庫(kù)的名稱?參數(shù)=值 // 避免中文亂碼要指定useUnicode和characterEncoding // 執(zhí)行數(shù)據(jù)庫(kù)操作之前要指定useServerPrepStmts=false,否則容易出現(xiàn)中文亂碼問(wèn)題 String url="jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&characterEncoding=utf-8&useServerPrepStmts=false"; String user="root"; String password="123456"; Connection con=DriverManager.getConnection(url,user,password); //獲取上傳文件 String filename=request.getParameter("file"); if(filename!=null&&!filename.equals("")){ //將request轉(zhuǎn)為輸入流 InputStream is=request.getInputStream(); //通過(guò)輸入流獲取上傳文件的二進(jìn)制流 HSSFWorkbook workbook=new HSSFWorkbook(is); //遍歷表格 HSSFSheet sheet = workbook.getSheetAt(0); for (int i = 1; i<= sheet.getLastRowNum(); i++) { HSSFRow row = sheet.getRow(i); String name = row.getCell(0).getStringCellValue(); String age=row.getCell(1).getStringCellValue(); String sex=row.getCell(2).getStringCellValue(); String address=row.getCell(3).getStringCellValue(); String sql = "INSERT INTO student(name,age,sex,address) VALUES(?,?,?,?)"; PreparedStatement stmt = con.prepareStatement(sql); stmt.setString(1, name); stmt.setString(2, age); stmt.setString(3, sex); stmt.setString(4, address); stmt.executeUpdate(); } } response.sendRedirect("/importExcel.jsp"); }catch(Exception e){ e.printStackTrace(); } %>
4.最后,我們?cè)陧?yè)面上提供一個(gè)導(dǎo)入按鈕,用戶點(diǎn)擊該按鈕時(shí),就可以將Excel表中的數(shù)據(jù)導(dǎo)入到MySQL數(shù)據(jù)庫(kù)中
<input type="button" value="導(dǎo)入" onclick="location.href='upload.jsp'"/>
這樣我們就實(shí)現(xiàn)了JSP導(dǎo)入Excel到MySQL數(shù)據(jù)庫(kù)的操作。