zoukankan      html  css  js  c++  java
  • Java编程:使用Java读取Excel文件内容

     微软的ODBC驱动程序把工作表中的第一行作为列名(译者注:即字段名),工作表名作为数据库表名。 

     要通过JDBC访问工作表,我们还必须创建一个新的ODBC数据源,在Windows 2000系统上创建数据源的过程如下:

     进入“控制面板” --> “管理工具” --> “数据源(ODBC)”,(译者注:打开后选择系统DSN),点击添加,在弹出窗口中选择“Driver do Microsoft Excel(*.xls)”

     然后在数据源名处输入一个名字myexcel(译者注:相当于数据库名),然后点击“选择工作簿”,然后找到并选取你要读取的Excel文件。点击确定,系统数据源列表中会出现你设置的数据源名称,点击确定完成配置。 

      注:现在如果我们想挑出test1列中的所有“测试”值,那就需要用以下的SQL查询:

      SELECT test1 FROM [Sheet1$] WHERE test1='测试'

      要注意的是工作表名后面跟了一个“$”符号,这个符号是不可缺少的。因为他的前后有方括号,因为“$”是SQL语句中的保留字。

    下面是例子程序:
    import java.sql.Connection;
    import java.sql.Statement;
    import java.sql.ResultSet;
    import java.sql.DriverManager;

    public class ExcelReader {

        public static void main( String[] args ) {

            Connection c = null;
            Statement stmnt = null;
            try {
                Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
                c = DriverManager.getConnection( "jdbc:odbc:myexcel", "", "" );
                stmnt = c.createStatement();
                String query = "SELECT test1 FROM [Sheet1$] WHERE test1='测试'";
                ResultSet rs = stmnt.executeQuery( query );
                
                System.out.println( "查得匹配'测试'的test1的记录为:" );
                while( rs.next() ) {
                    System.out.println( rs.getString( "test1" ) );
                }
            }
            catch( Exception e ) {
                System.err.println( e );
            }
            finally {
                try {
                    stmnt.close();
                    c.close();
                }
                catch( Exception e ) {
                    System.err.println( e );
                }
            }
        }
    }


    另外,该程序为读取Excel中所有记录的程序: 
    import java.sql.Connection;
    import java.sql.Statement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.DriverManager; 

    public class ExcelReader { 
      //ODBC连接Excel
      public static void main(String[] args) {
        Connection conn = null;
        Statement stm = null;
        ResultSet rs = null;
        try {
             //加载ODBC驱动
             Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
             //创建连接对象
             conn = DriverManager.getConnection("jdbc:odbc:myexcel");
             stm = conn.createStatement();//创建Statement对象
             String sql = "select * from [sheet1$]";//查询excel中的工作表时后面要加上$符号并在最外层加上[]
             rs = stm.executeQuery(sql);//执行sql语句,得到查询结果集
             //遍历结果集
             while(rs.next()){
              //输出每一行记录的相关数据
              //System.out.println(rs.getString("name")+"-"+rs.getInt("age"));
              System.out.println(rs.getString(1)+"-"+rs.getInt(2));//可以通过上一行代码利用列名进行获取数据,也可以用列数来获取数据,列数从1开始
           }catch (ClassNotFoundException e) {
             e.printStackTrace();
          } catch (SQLException e) {
             e.printStackTrace();
          }finally{
             try {
                  if (rs != null) {
                     rs.close();
                  }
                  if (stm != null) {
                     stm.close();
                  }
                  if (conn != null) {
                     conn.close();
                  }
               } catch (SQLException e2) {
                  e2.printStackTrace();
           }
        }
    }

  • 相关阅读:
    jvm调优核心思路
    G1 垃圾回收器
    类加载和内存区域划分
    jvm优化案例
    垃圾回收
    buffer pool详解
    InnoDb存储引擎执行流程
    mysql总体架构
    (转载)C#串口介绍以及简单串口通信程序设计实现
    C++文本操作(读写文本文件/二进制文件)
  • 原文地址:https://www.cnblogs.com/Miss-Lee/p/3794911.html
Copyright © 2011-2022 走看看