读取Excel数据

本文介绍了一种使用C#从Excel文件中读取数据并将其填充到DataTable的方法。通过构建连接字符串并利用OleDbDataAdapter组件,可以实现对Excel表格数据的有效读取。

From http://www.cnblogs.com/gossip/archive/2008/12/25/1362005.html

private DataTable GetDataTableFromExcel()
        {
            #region 获取应用程序路径
            //获取应用程序的当前工作目录。
            String path1 = System.IO.Directory.GetCurrentDirectory();   

            //获取程序的基目录。
            String path2 = System.AppDomain.CurrentDomain.BaseDirectory;     


            //获取和设置包括该应用程序的目录的名称。
            String path3 = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;            
 

            //获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。
            String path4 = System.Windows.Forms.Application.StartupPath;           
         
            //获取启动了应用程序的可执行文件的路径及文件名
            String path5 = System.Windows.Forms.Application.ExecutablePath;
            #endregion

            // 获取Excel路径
            string path = path1 + "http://www.cnblogs.com/xiaoN-2006/admin/file://test.xlsx/;";

            //连接串
            string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+ path +"Extended Properties='Excel 12.0 Xml;HDR=YES'";
            OleDbConnection conn = new OleDbConnection(strConn);

            conn.Open();

            //返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等 
            DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });

            //包含excel中表名的字符串数组
            string[] strTableNames = new string[dtSheetName.Rows.Count];
            for (int k = 0; k < dtSheetName.Rows.Count; k++)
            {
                strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString();
            }

            OleDbDataAdapter myCommand = null;
            DataTable dt = new DataTable();

            //从指定的表明查询数据,可先把所有表明列出来供用户选择
            string strExcel = "select * from [" + strTableNames[0] + "]";
            myCommand = new OleDbDataAdapter(strExcel, strConn);
            dt = new DataTable();
            myCommand.Fill(dt);

            return dt; //返回DataTable

        }

 

有个好的得到连接字符串的网址http://www.connectionstrings.com/

转载于:https://www.cnblogs.com/xiaoN-2006/archive/2008/12/25/1362451.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值