<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    使用Java讀取Excel文件內(nèi)容

    可以用Java讀取Microsoft Excel文件。微軟提供了一個Excel的ODBC驅(qū)動程序,因此我們就可以使用JDBC和Sun的JDBC-ODBC驅(qū)動來讀取Excel文件了。

    ??如果你有個Excel文件,名為Book1.xls(譯者注:由于原文的例子我沒有下載下來,所以我用了自己的例子),并且,該文件中有一個工作表(sheet)名為Sheet1

    ??

    微軟的ODBC驅(qū)動程序把工作表中的第一行作為列名(譯者注:即字段名),工作表名作為數(shù)據(jù)庫表名。

    ??要通過JDBC訪問工作表,我們還必須創(chuàng)建一個新的ODBC數(shù)據(jù)源,在Windows 2000系統(tǒng)上創(chuàng)建數(shù)據(jù)源的過程如下:


    進(jìn)入“控制面板” --> “管理工具” --> “數(shù)據(jù)源(ODBC)”,(譯者注:打開后選擇系統(tǒng)DSN),點(diǎn)擊添加,在彈出窗口中選擇“Driver do Microsoft Excel(*.xls)”




    然后在數(shù)據(jù)源名處輸入你一個名字Book1(譯者注:相當(dāng)于數(shù)據(jù)庫名),然后點(diǎn)擊“選擇工作簿”,然后找到并選取你的Excel文件


    點(diǎn)擊確定后,系統(tǒng)數(shù)據(jù)源列表中會出現(xiàn)你設(shè)置的數(shù)據(jù)源名稱,
    ??



    ??現(xiàn)在數(shù)據(jù)表已經(jīng)在數(shù)據(jù)源列表里了(譯者注:點(diǎn)擊確定完成配置)。

    ??(譯者注:我的例子中)現(xiàn)在如果我們想挑出test1列中的所有“測試”值,那就需要用以下的SQL查詢:

    ??SELECT test1 FROM [Sheet1$] WHERE test1='測試'

    ??要注意的是工作表名后面跟了一個“$”符號,這個符號是不可缺少的。為什么?因?yàn)樗那昂笥蟹嚼ㄌ枺驗(yàn)椤?”是SQL語句中的保留字。Life is never easy(譯者注:作者發(fā)感慨了)。

    下面是例子程序:
    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 );
    ????????????}
    ????????}
    ????}
    }

    在此程序中,主函數(shù)main() 建立了一個數(shù)據(jù)表的連接,并取出符合條件的記錄。

    (譯者注:另外,我這里還有一段程序,是讀取所有記錄的程序,僅作參考):

    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());
    ????????}
    ????}

    }

    posted on 2006-06-30 16:51 software5168 閱讀(9988) 評論(4)  編輯  收藏 所屬分類: Java學(xué)習(xí)

    評論

    # re: 使用Java讀取Excel文件內(nèi)容 2008-10-22 10:12 LWS

    有點(diǎn)不太明白 難道只能讀一列~?  回復(fù)  更多評論   

    # re: 使用Java讀取Excel文件內(nèi)容[未登錄] 2009-02-02 16:35 abc

    謝謝樓主,太好了。  回復(fù)  更多評論   

    # re: 使用Java讀取Excel文件內(nèi)容 2011-01-25 14:19 fengzhisha0914

    好是好,不過不太實(shí)用,可能對于做開發(fā)的人員,設(shè)置一下odbc連接沒什么問題,但是程序用戶多了. 有辦法讓用戶都設(shè)置嗎.  回復(fù)  更多評論   

    # re: 使用Java讀取Excel文件內(nèi)容 2013-01-06 08:29 陳露

    字段內(nèi)容太長讀取不出來怎么辦?  回復(fù)  更多評論   

    <2013年1月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    收藏夾

    JAVA學(xué)習(xí)網(wǎng)站

    綜合

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: a级毛片在线视频免费观看| 中文字幕无码免费久久9一区9 | 久久精品国产亚洲av麻豆图片| 免费无码黄网站在线看| 曰韩亚洲av人人夜夜澡人人爽| 一个人看的www免费在线视频| 中文字幕亚洲日本岛国片| 一个人看的www免费高清| 伊伊人成亚洲综合人网7777| 国产精品网站在线观看免费传媒 | 亚洲国产夜色在线观看| 亚洲免费中文字幕| 亚洲AV无码一区二区三区人| 成年女人毛片免费视频| 精品一区二区三区免费毛片| 亚洲男人的天堂在线va拉文| 国产精品免费久久久久影院| 国产AV无码专区亚洲AVJULIA| 男女午夜24式免费视频| 亚洲国产高清视频在线观看| 性一交一乱一视频免费看| 特级aaaaaaaaa毛片免费视频| 亚洲综合另类小说色区| 最近2019中文字幕免费直播| 亚洲一久久久久久久久| 亚洲中文字幕成人在线| 免费无码中文字幕A级毛片| 亚洲字幕AV一区二区三区四区 | 国产三级免费观看| 中文字幕手机在线免费看电影| 中文字幕亚洲色图| 国产色爽女小说免费看| 永久免费av无码网站yy| 亚洲色图激情文学| 久久影视国产亚洲| 4399好看日本在线电影免费| 免费人成视频在线观看免费| 自怕偷自怕亚洲精品| 国产免费av片在线播放| 色欲色香天天天综合网站免费| 亚洲欧美国产精品专区久久|