jxl--jsp读取excel文件并将文件存入数据库
2018-03-17 23:24
721 查看
1.说明:
1.需要jxl.jar、commons-fileUpload-1.3.2.jar、commons-ios-2.5.jar、数据库驱动包mysql-connector-java.bin.jar2.表单需要注意的地方:1.method="post" 2.type="File" 3.enctype="multipart/form-data" 设置表单的MIME编码,设置这个属性才能完整上传文件数据。
3.建立一获取本地Excel文件的表单(getExcel.jsp),建立数据库,建立一个servlet用于处理文件的上传操作(Excelservlet.java),建立一个实体类(entity.java),JDBC.java数据库的链接,
(分开多个文件层次思路更 清晰)
1.数据库建表以及建立数据链接操作(JDBC.java)
JDBC.java
package com;
import java.sql.*;
public class JDBC {
private static Connection conn =null;
private static Statement st =null;
private static ResultSet rs =null;
public static Connection getConn(){
//数据库连接
try {
Class.forName("com.mysql.jdbc.Driver");//装载驱动
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "9527");
}
catch (SQLException e) {
System.out.println("连接失败,请检查用户名或密码是否正确,或是MySQL数据库是否已经启动");
}
}catch (ClassNotFoundException e) {
System.out.println("驱动程序未找到,请检查是否将驱动程序copy到lib目录!");
}
return conn;
}
public static Statement getSt(){
try {
if(getConn()!=null){
st = conn.createStatement();
}
}
catch (SQLException e) {
}
return st;
}
public static ResultSet select(String sql){
try {
if(getSt()!=null){
rs = st.executeQuery(sql);
}
}
catch (SQLException e) {
System.out.println("sql查询语句异常,请检查你的sql语句:"+sql);
}
return rs;
}
//更新
public static boolean Update(String sql){
boolean flag = false;
try {
if(getSt()!=null){
st.executeUpdate(sql);
flag = true;
close();
}
}
catch (SQLException e) {
System.out.println("sql语句异常,请检查你的sql语句:"+sql);
}
return flag;
}
public static void close(){
try {
if(st!=null){
st.close();
}
if(conn!=null){
conn.close();
}
}
catch (SQLException e) {
System.out.println("关闭失败!");
}
}
}
2.getExcel.jsp(上传页面)
<%@page import="java.io.InputStream"%>
<%@ page language="java"
import="java.util.*,com.*,java.io.*,jxl.*,jxl.read.biff.BiffException,java.sql.*"
pageEncoding="gbk"%>
<%
request.setCharacterEncoding("gbk");
response.setCharacterEncoding("gbk");
%>
<html>
<head>
<title>Excel文件讀取</title>
</head>
<body>
<div align="center">
<form action="Excelservlets" method="post" enctype="multipart/form-data">
<input type="file" name="fileExcel">
<input type="submit" value="導入"/>
</form>
<!-- 用于上显示数据库的数据,上传后显示出来 --> <table border="1" width="50%"> <tr> <th>姓名</th> <th>年齡</th> <th>工資</th> </tr> <% Excel E =new Excel(); ResultSet rs = E.selectAll(); while(rs.next()){ %> <tr> <td><%=rs.getString(1) %></td> <td><%=rs.getInt(2) %></td> <td><%=rs.getString(3) %></td> </tr> <% } %> </table> </div> <%String fa =request.getParameter("fa"); if(fa!=null){ out.print("添加失敗,是否重已複添加"); } %>
</body>
</html>
2.Excelservlets.java(servlet文件)
package Servlet; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import com.Excel; public class Excelservlets extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=gbk"); response.setCharacterEncoding("gbk"); request.setCharacterEncoding("gbk"); PrintWriter out = response.getWriter(); System.out.println("獲得一個get請求"); //创建一个解析器工厂 DiskFileItemFactory fu =new DiskFileItemFactory (); //得到解析器,处理上传的文件数据,并将表单中每个输入项封装成一个FileItem 对象中 ServletFileUpload upload = new ServletFileUpload(fu); List<FileItem> fileItems; try { fileItems = upload.parseRequest(request);//获得表单数据 upload.setHeaderEncoding("gbk"); ArrayList al =new ArrayList();//將文件存到集合中; al.add(fileItems); Excel E = new Excel();//new一个对象 让对象调用实体类的方法 for (int i = 0; i < al.size(); i++) {//遍歷集合 取出文件 FileItem item =(FileItem)al.get(i); InputStream is=item.getInputStream(); Workbook wb;//建立工作簿 try { wb = Workbook.getWorkbook(is);//得到工作簿 Sheet st = wb.getSheet(0);//得到工作簿中第一個工作表 Cell cell = null;//获得单个对象 //此处行数如果不要第一行就从1开始 for(int m 4000 = 1; m < st.getRows(); m++) {//st.getRows() excel的行數 String[][] ss = new String[st.getRows()][st.getColumns()]; for (int j = 0; j < st.getColumns(); j++) {//st.getColumns() excel中數據表格的列數 cell = st.getCell(j, m);//不要放反了,第一个参数是列数,第二个是行 String str = cell.getContents();//读入一个字符串 ss[m][j] = str;//将单元格添加如数组中 //给对应的字段赋值,当前就写了三个字段 if (j == 0) {//给第一个字段赋值 E.setName(ss[m][j]); }else if(j==1){//给第二个字段赋值 E.setAge(Integer.parseInt(ss[m][j])); }else if(j==2){//给第三个字段赋值 E.setGz(ss[m][j]); } } if(E.add()){//调用实体类的插入方法 if(m==st.getRows()-1){//当循环执行到最后一个时跳转 request.getRequestDispatcher("getexcel.jsp").forward(request, response); } }else{ if(m==st.getRows()-1){//当循环执行到最后一个时跳转 request.getRequestDispatcher("getexcel.jsp?fa=ok").forward(request, response); } } } wb.close(); is.close(); } catch (BiffException e) { System.out.print("文件格式可能不對"); } } out.flush(); out.close(); } catch (FileUploadException e1) { e1.printStackTrace(); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=gbk"); response.setCharacterEncoding("gbk"); request.setCharacterEncoding("gbk"); PrintWriter out = response.getWriter(); doGet(request,response); out.flush(); out.close(); } }3.实体类(entity.java)
package com; import javax.resource.cci.ResultSet; public class entity{ String name; int age ; String gz; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getGz() { return gz; } public void setGz(String gz) { this.gz = gz; } public boolean add(){//插入方法 String sql = "insert into excel values('"+name+"','"+age+"','"+gz+"')"; return JDBC.Update(sql); } public java.sql.ResultSet selectAll(){//取数据 String sql ="select * from excel"; return JDBC.select(sql); } }4.最后就是取数据了。getExcel.jsp(上传页面)代码在这页面
<!-- 用于上显示数据库的数据,上传后显示出来 --> <table border="1" width="50%"> <tr> <th>姓名</th> <th>年齡</th> <th>工資</th> </tr> <% Excel E =new Excel(); ResultSet rs = E.selectAll(); while(rs.next()){ %> <tr> <td><%=rs.getString(1) %></td> <td><%=rs.getInt(2) %></td> <td><%=rs.getString(3) %></td> </tr> <% } %> </table> </div> <%String fa =request.getParameter("fa"); if(fa!=null){ out.print("添加失敗,是否重已複添加"); } %>
最后插入结果:
.xls文件
相关文章推荐
- 在structs框架下使用JXL文件读取工具将Excel表格导入本地数据库
- Java中上传excel文件并在服务器端读取存入数据库
- 上传Excel文件并读取存入数据库
- 上传excel文件并在服务器端读取存入数据库
- 1.读取excel文件,将输入存储到数据库中(JXL) 2.完成商品的检索相关功能 1.根据分类,显示分类下所有的商品信息,按照库存量从低到高排序(提供补货依据) 2.模糊搜索,根据商品信息(名
- OAF_文件系列9_实现OAF解析Excel并读取至数据库JXL
- Java模块 -- 读取Excel文件写入数据库 Mybatis , POI , JXL
- ava中上传excel文件并在服务器端读取存入数据库
- Java中上传excel文件并在服务器端读取存入数据库
- 将数据库中读取的文件写入Excel文件
- 将Excel文件导入数据库(POI+Excel+MySQL)(jsp页面导入)
- [JAVA] java读取Excel文件内容,jxl(Excel 2003)
- jxl读取excel文件异常:Unable to recognize OLE stream 的解决方法
- php读取excel文件并导入数据库(表头任意设定)
- Java通过apache poi 读取excel(.xlsx)文件,并通过MyBbtis插入数据库中
- JXL 读取 Excel java中jxl导出数据到excel的例子 上传文件
- jxl读取指定文件下的所有Excel文件,但是是.xls文件,查的是jxl不支持excel2007
- jsp读取Excel文件内容
- [转] 从数据库中读取图片并导入Excel文件,C#方式
- JXL导入EXCEL文件到数据库