通过jdbc-odbc桥来访问excel文件 pcera
说是对文件的操作有点牵强附会,毕竟这是对单一类型的文件具体操作 。
这是一段通过jdbc-odbc桥来对excel的访问的程序,此方法的原创真是可谓随心所欲呀!!这里的随心所欲可是绝对的褒义!我认为这个方法要比通过Java Excel API(jxl.*)访问excel文件要方便。但是通过桥向excel的写入我还没有调试出来,网上有人说可以的,但是也没有给出具体方法,我也是半信半疑,所以索性就不搞了,到真正用到对excel的操作时还得用Java Excel API(jxl.*),姜还是老的辣呀!!呵呵。。。。好了,说正题吧,首先对你的excel文件建立一个odbc数据源,哦,对了,注意:微软的ODBC驱动程序把工作表中的第一行作为列名,工作表名作为数据库表名。 具体操作是:“控制面板” --> “管理工具” --> “数据源(ODBC)”-->“选择系统DSN”,点击添加,在弹出窗口中选择“Driver do Microsoft Excel(*.xls)”。然后在数据源名处输入你一个名字handleExcel,然后点击“选择工作簿”,然后找到并选取你的Excel文件点击确定后,系统数据源列表中会出现你设置的数据源名称,现在数据表已经在数据源列表里了。需要注意的是工作表名后面跟了一个“$”符号,这个符号是不可缺少的
import java.sql.*;
/**
* 通过jdbc-odbc桥来访问excel文件(至于数据的写入还没调试出来,
* 但是看到有人说是可以通过jdbc-odbc桥来向excel文件写入)
* @see
* @version Version 2005-7-27
* @author Administrator
* @since JDK1.4.2
*/
public class handleExcel {
/**
* 创建连接
* @param
*/
Connection con = null;
Statement stmnt = null;
public handleExcel() {
//TODO Auto-generated catch block
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection( "jdbc:odbc:handleExcel","","" );
stmnt = con.createStatement();
}catch(Exception e){
System.out.println("con is error!!");
e.printStackTrace();
}
}
/**
* 读取excel文件内容
* @param
*/
public void getResult(){
try {
ResultSet rs = stmnt.executeQuery("SELECT * FROM [Sheet1$]");
//获得列的总数
ResultSetMetaData RSMD = rs.getMetaData();
int rowCount = RSMD.getColumnCount();
//获得和打印记录
System.out.println( "查得的记录为:");
while( rs.next() ) {
for (int i = 1;i <= rowCount;i++){
System.out.print(rs.getString(i)+", ");
}
System.out.println(" ");
}
}
catch( SQLException e ) {
System.out.println("get is error!!");
e.printStackTrace();
}
}
/**
* 向excel文件写入内容
* @param
*/ /*
public void setPar(){
try{
int result =
stmnt.executeUpdate("insert into [sheet1$] values ('marry',21,'English','women','teacher')");
System.out.println("result is : "+result);
}catch(SQLException e ){
System.out.println("Set is error!!");
e.printStackTrace();
}
}*/
/**
* 测试函数
* @param
*/
public static void main(String[] args) {
handleExcel TestHpc = new handleExcel();
//TestHpc.setPar();
TestHpc.getResult();
}
}