日期:2014-05-16  浏览次数:20371 次

[转]通过jdbc-odbc桥来访问excel文件

?

记录,备用
通过jdbc-odbc桥来访问excel文件?
   说是对文件的操作有点牵强附会,毕竟这是对单一类型的文件具体操作 。
   这是一段通过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();
   }
  }
?

来源:http://www.wangchao.net.cn/bbsdetail_70665.html