工具选择
数据库 ORACLE11G
编程语言 JAVA
首先是使用JAVA语言编写一个解析EXCEL文件的小代码,这里需要一个工具JXL.JAR,这是个JAR包,有了它,我们就可以轻松的把EXCEL文件解析
如果要对EXCEL文件进行操作,则需要对EXCEL文件有所了解。
1、我们打开EXCEL文件看到一个一个小格子是单元格,在JXL里面被定义为CELL;
2、软件线面,状态栏上面有几个标签,可以在不同标签里进行切换,每个标签对应一个SHEET;
3、每一个可编辑的EXCEL文件在JXL里面定义为WORKBOOK;
我们的TEXT.XLS里面有两列,第一列为姓名,第二列为性别,共20行。
package com.oracle.test;
import java.io.File;
import java.io.IOException;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
public class loadExecl{
public static Connection con=null;
public static void build(Connection conn) throws IOException,BiffException{
String filepath="d:\\test.xls";
System.out.print(filepath);
File excelfile = new File(filepath);
Workbook book = null;
CallableStatement st = null;
int rownum;
String name = null;
String sex = null;
try{
book = Workbook.getWorkbook(excelfile);
Sheet sheet = book.getSheet(2);//工作簿是从0开始的
System.out.print(sheet.getRows());
for(rownum=1;rownum<sheet.getRows();rownum++){
name = sheet.getCell(0,rownum).getContents().trim();//参数顺序为(列,行)
sex = sheet.getCell(1,rownum).getContents().trim();//getContents().trim()是获取单元格内的值并去空格
try{
st = conn.prepareCall("insert into test_table values (?,?)");//这里是执行插入操作,可以换成别的UPDATE
st.setString(1, name);
st.setString(2, sex);
st.execute();
st.close();
System.out.println("第"+rownum+"条记录!");
}catch (SQLException e) {
e.printStackTrace();
}
}
}finally{
book.close();
}
}
public static Connection getConnection() throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{//配置JDBC连接
String url = "jdbc:oracle:thin:@127.0.0.1:1521:test";
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
con = DriverManager.getConnection(url, "scott", "123456");
return con;
}
public static void main(String [] arg) throws IOException, InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException, BiffException{
Connection co = loadExecl.getConnection();
co.setAutoCommit(true);
loadExecl.build(co);
co.close();
System.out.println("JUST OK!!!");
}
}
如上,红色部分是给像我一样的大老粗提个醒,记得要释放资源。
ST.CLOSE是关闭游标,ORACLE默认游标值为300,如果不关闭,而且数据量超过300的时候,就会报错。
大家可能看到,我的ROWNUM是从1开始,不是必须的,因为我的EXCEL文件第一行是标题,我这里是跳过标题。
别的我不说了,里面用到得FILE和SQL的包大家自己加上去吧。
代码可以直接拷贝使用,我试过了,很快。8000条数据就几分钟,如果只是一次性的导入完全可以了。