`
xiaoboss
  • 浏览: 642756 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java odbc读取Excel文件内容

    博客分类:
  • java
 
阅读更多

可以用Java读取Microsoft Excel文件。微软提供了一个Excel的ODBC驱动程序,因此我们就可以使用JDBC和Sun的JDBC-ODBC驱动来读取Excel文件了。

  如果你有个Excel文件,名为Book1.xls(译者注:由于原文的例子我没有下载下来,所以我用了自己的例子),并且,该文件中有一个工作表(sheet)名为Sheet1

  

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

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


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




然后在数据源名处输入你一个名字Book1(译者注:相当于数据库名),然后点击“选择工作簿”,然后找到并选取你的Excel文件


点击确定后,系统数据源列表中会出现你设置的数据源名称,
  



  现在数据表已经在数据源列表里了(译者注:点击确定完成配置)。

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

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

  要注意的是工作表名后面跟了一个“$”符号,这个符号是不可缺少的。为什么?因为他的前后有方括号,因为“$”是SQL语句中的保留字。Life is never easy(译者注:作者发感慨了)。

下面是例子程序:

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:Book1", "", "" );
            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 );
            }
        }
    }
}


在此程序中,主函数main() 建立了一个数据表的连接,并取出符合条件的记录。

(译者注:另外,我这里还有一段程序,是读取所有记录的程序,仅作参考):

import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.DriverManager; 

public class ExcelReader { 

    public static void main(String[] args){
        Connection connection = null; 

        try{
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection con = DriverManager.getConnection( "jdbc:odbc:Book1","","" );
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery( "SELECT * FROM [Sheet1$]" ); 

            ResultSetMetaData rsmd = rs.getMetaData();
            int numberOfColumns = rsmd.getColumnCount(); 

            while (rs.next()) {
                for (int i = 1; i <= numberOfColumns; i++) {
                    if(i>1)  //用逗号分隔各列
      System.out.print(", ");
                    String columnValue = rs.getString(i);
                    System.out.print(columnValue);
                }
                System.out.println("");
            } 

            st.close();
            con.close(); 


        } catch(Exception ex) {
            System.err.print("Exception: ");
            System.err.println(ex.getMessage());
        }
    }

}
分享到:
评论

相关推荐

    JAVA 范例大全 光盘 资源

    实例92 Java操作Excel文件 237 第11章 Java高级特性 245 实例93 自动装箱与拆箱 245 实例94 for/in循环 247 实例95 参数不确定(可变长参数) 249 实例96 方法改变(协变式返回类型) 251 实例97 静态导入 252...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例245 读取XML文件属性 310 第3篇 窗体与控件应用 第11章 窗体设计 314 11.1 设置窗体位置 315 实例246 控制窗体加载时的位置 315 实例247 设置窗体在屏幕中的位置 315 实例248 从上次关闭位置启动窗体 316 实例...

    java范例开发大全源代码

     实例135 读取Excel文件中的内容 198  实例136 生成PDF文件 199  实例137 读取PDF文件中的内容 203  实例138 用iText生成Word文件 205  实例139 利用POI读取Word文件中的内容 208  7.3 字符流 209 ...

    java范例开发大全

    实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 199 实例137 读取PDF文件中的内容 203 实例138 用iText生成Word文件 205 实例139 利用POI读取Word文件中的内容 208 7.3 字符流 209 实例140 按顺序创建文件 ...

    Java范例开发大全 (源程序)

     实例135 读取Excel文件中的内容 198  实例136 生成PDF文件 199  实例137 读取PDF文件中的内容 203  实例138 用iText生成Word文件 205  实例139 利用POI读取Word文件中的内容 208  7.3 字符流 209  ...

    Java范例开发大全(全书源程序)

    实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 199 实例137 读取PDF文件中的内容 203 实例138 用iText生成Word文件 205 实例139 利用POI读取Word文件中的内容 208 7.3 字符流 209 实例140 按顺序...

    java范例开发大全(pdf&源码)

    实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 199 实例137 读取PDF文件中的内容 203 实例138 用iText生成Word文件 205 实例139 利用POI读取Word文件中的内容 208 7.3 字符流 209 实例140 按顺序创建文件 ...

    LotusDomino学习笔记(400页涵盖代理和公式使用)

    1. 选取视图的列的内容 @Trim @DbColumn 6 2. 隐藏判断常用的命令 6 3. 判断当前用户是否是“某个组”的成员,然后来显示和隐藏 6 4. 在Lotus Domino 中显示图 6 5. 链接JS文件 6 6. 删除文档的方法 7 7. $$return ...

    NTKO文档在线编辑控件4.0.1.2

    V2,3,2,0版本之后,NTKO OFFICE文档控件支持直接从ODBC数据源读取文档内容,或者将文档内容存入ODBC数据源。这为C/S结构下创建共享的办公系统,文档管理,知识管理解决方案提供了更强大的接口。 8 状态栏,智能Web...

    LotusDomino学习笔记.doc

    1. 选取视图的列的内容 @Trim @DbColumn 6 2. 隐藏判断常用的命令 6 3. 判断当前用户是否是“某个组”的成员,然后来显示和隐藏 6 4. 在Lotus Domino 中显示图 6 5. 链接JS文件 6 6. 删除文档的方法 7 7. $$return ...

    Lotus Domino WEB 开发技术积累-DOC(313页)

    1. 选取视图的列的内容 @Trim @DbColumn 6 2. 隐藏判断常用的命令 6 3. 判断当前用户是否是“某个组”的成员,然后来显示和隐藏 6 4. 在Lotus Domino 中显示图 6 5. 链接JS文件 6 6. 删除文档的方法 7 7. $$return ...

    Lotus Domino WEB详细 学习笔记

    1. 选取视图的列的内容 @Trim @DbColumn 6 2. 隐藏判断常用的命令 6 3. 判断当前用户是否是“某个组”的成员,然后来显示和隐藏 6 4. 在Lotus Domino 中显示图 6 5. 链接JS文件 6 6. 删除文档的方法 ...

    VC与Labview、Matlab编程论文资料[2].rar

    VC_中利用DirectX实现3DS文件的读取和控制.pdf VC_中基于MFC的多线程应用程序设计.pdf VC_中连接Oracle数据库的几种方法.pdf VC_串口通信中多线程技术的应用研究.pdf VC_和COM的预测控制算法的仿真研究.pdf VC_和...

    VC与Labview、Matlab编程论文资料

    VC_中利用DirectX实现3DS文件的读取和控制.pdf VC_中基于MFC的多线程应用程序设计.pdf VC_中连接Oracle数据库的几种方法.pdf VC_串口通信中多线程技术的应用研究.pdf VC_和COM的预测控制算法的仿真研究.pdf VC_和...

    VC与Labview、Matlab编程论文资料[4].rar

    VC_中利用DirectX实现3DS文件的读取和控制.pdf VC_中基于MFC的多线程应用程序设计.pdf VC_中连接Oracle数据库的几种方法.pdf VC_串口通信中多线程技术的应用研究.pdf VC_和COM的预测控制算法的仿真研究.pdf VC_和...

    易语言程序免安装版下载

    数据库操作支持库增加读写长整数字段的功能,但受限于系统接口暂不能读写超出整数范围的数值。 7. 修改高级表格支持库,通过鼠标调整行高列宽时不改变当前光标行列号。 8. 修改BUG:在IDE中打开源代码文件(.e)后...

Global site tag (gtag.js) - Google Analytics