24秒

全力以赴争取每个24秒……

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: 订阅 订阅 :: 管理 ::

一、安装Excel2007 或者 下载2007的插件 http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe

二、导入代码

protected DataTable ExcelHelper(string filePaht)
        {
            string sFilePath2003 = Server.MapPath("ExcelData/2003.xls");
            //string sFilePath2007 = Server.MapPath("ExcelData/2007.xlsx");
            
            // 支持Excel2003 和 Excel2007 的连接字符串
            // "HDR=yes;"是说第一行是列名而不是数据,"HDR=No;"正好与前面的相反。 
            // 如果列中的数据类型不一致,使用"IMEX=1"可必免数据类型冲突。
            string sConn = "provider=Microsoft.ACE.OleDb.12.0; Data Source ='" + sFilePath2003 + "';Extended Properties='Excel 12.0;HDR=yes;IMEX=1';";
            if (string.IsNullOrEmpty(sConn)) {  return null ; }

            DataTable dtExcel = new DataTable();
            using (OleDbConnection conn = new OleDbConnection(sConn))
            {
                conn.Open();
                // 获取Excel的第一个SheetName
                string sSheetName = "";
                DataTable dtSheet = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });
                if (dtSheet.Rows.Count > 0)
                    sSheetName = dtSheet.Rows[0]["Table_Name"].ToString();
                else
                    return null;
                // 获取Excel数据
                string sSql = string.Format("select * from [{0}]", sSheetName);
                OleDbDataAdapter adapter = new OleDbDataAdapter(sSql, conn);
                adapter.Fill(dtExcel);
                conn.Close();
            }

            return dtExcel;
        }
posted on 2010-07-28 19:03  bignjl  阅读(2897)  评论(1编辑  收藏  举报