您的位置:程序门 -> .net技术 -> c#



关于.net 连接excel  问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于.net 连接excel 问题
发表于:2007-05-14 14:52:19 楼主

                static   void   main(string[]   args)
                {
                        //string   strconn   =   @ "dsn=excel   odbc;dbq=d:\testproject\excelodbctest\testodbcxls\test1.xls;defaultdir=d:\testproject\excelodbctest\testodbcxls;driverid=790;fil=excel   8.0;maxbuffersize=2048;pagetimeout=5 ";
                        //odbcconnection   conn   =   new   odbcconnection(strconn);
                        //string   strsql   =   @ "select   *   from   [sheet1$] ";
                        //odbcdataadapter   oda   =   new   odbcdataadapter(strsql,   conn);
                        //dataset   ds   =   new   dataset();
                        //oda.fill(ds);


                        string   strconn   =   @ "provider=microsoft.jet.oledb.4.0;data   source=d:\testproject\excelodbctest\testodbcxls\test1.xls;extended   properties=excel   8.0; ";
                        oledbconnection   conn   =   new   oledbconnection(strconn);
                        conn.open();
                        string   strsql   =   @ "select   *   from   [sheet1$] ";
                        oledbdataadapter   odda   =   new   oledbdataadapter(strsql,   conn);
                        //dataset   ds   =   new   dataset();
                        //odda.fill(ds);
                       
                        //for   (int   i   =   0;   i   <   ds.tables[0].rows.count;   i++)
                        //{
                        //         console.write(ds.tables[0].rows[i][0]);
                        //         console.readline();
                        //}

                     
                        datatable   dt   =   new   datatable();
                        odda.fill(dt);
                        for   (int   i   =   0;   i   <   dt.rows.count;   i++)
                        {
                                console.write(dt.rows[i][0]);
                                console.readline();
                        }
                        conn.close();


                }
以上是我的代码

问题丢失数据  
理应显示的数据为
1322313213213210
1
2a
35.5
-4
2007-5-13
2007-5-13
你好
hello
11:34:55
5.05
11,111,111.00

结果显示数据为:
1

35.5
-4
39539
39539


5.05
11,111,111.00

我用odbc和jet4.0都是同样的结果

我做了个asp的页面用ado连接

<%
set   hpconn_ex   =   server.createobject( "adodb.connection ")
hpconn_ex.open "provider=microsoft.jet.oledb.4.0;data   source= "&server.mappath( "test1.xls ")& ";extended   properties= " "excel   8.0;hdr=yes;imex=1 " " "

strsql   =   "select   *   from   [sheet1$] "
set   rs   =   server.createobject( "adodb.recordset ")
rs.open   strsql,hpconn_ex,3
for   i   =   1   to   rs.recordcount
response.write   rs(0)& " </br> "
rs.movenext
next
set   rs   =   nothing  
hpconn_ex.close
set   hpconn_ex   =   nothing
%>
用jet4.0就可以显示

差别在于jet4.0的驱动后面       “hdr=yes;imex=1”
我加载在.net里就提示我     “找不到可打开的isam”

不知道什么原因   请知道的人解释一下。。。急啊!!!
发表于:2007-05-14 17:22:301楼 得分:0
看看excel中这一列的类型,如果是数字类型,有非数字就认为null了
发表于:2007-05-15 17:29:292楼 得分:0
我也实验了一下,与楼主一样的问题,要是如minajo21(大眼睛)所说,第一行,第一列的数字应该会显示啊,为什么也会丢失呢????
发表于:2007-05-15 18:04:343楼 得分:0
hpconn_ex.open "provider=microsoft.jet.oledb.4.0;data   source= "&server.mappath( "test1.xls ")& ";extended   properties= " "excel   8.0;hdr=yes;imex=1 " " "
把这句改为:
hpconn_ex.open "provider=microsoft.jet.oledb.4.0;data   source= "&server.mappath( "test1.xls ")& ";extended   properties= 'excel   8.0;hdr=yes;imex=1 ' "
发表于:2007-05-15 18:06:114楼 得分:0
试试这个:
http://blog.csdn.net/chengking/archive/2005/11/29/539514.aspx


快速检索

最新资讯
热门点击