ado读取excel

    public static class ExcelHelper
    {
        
/// <summary>
        
/// 读取所有的表(每个sheet映射为一个表)
        
/// </summary>
        
/// <param name="filepath"></param>
        
/// <returns></returns>
        public static System.Collections.Generic.List<string> GetTables(string filepath)
        { 
            List
<string> r=new List<string>();
            
if (File.Exists(filepath))
            {
                
//string connStr="Provider=Microsoft.Jet." + "OLEDB.4.0;Extended Properties=\"Excel 8.0\";Data Source=" + filepath;
                string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;data source=" + filepath + ";Extended Properties='Excel 12.0 Xml;HDR=YES'";
                
using (OleDbConnection conn = new OleDbConnection(connStr))
                {
                    conn.Open();
                    DataTable dt 
= conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    
for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        r.Add(dt.Rows[i][
2].ToString().Trim());
                    }
                }
            }
            
return r;
        }

        
/// <summary>
        
/// 读取表中的数据
        
/// </summary>
        
/// <param name="filepath"></param>
        
/// <param name="tableName">表名</param>
        
/// <returns></returns>
        public static DataTable GetTableData(string filepath,string tableName)
        {
            DataTable r 
= new DataTable();
            
if (File.Exists(filepath))
            {
                
//string connStr = "Provider=Microsoft.Jet." + "OLEDB.4.0;Extended Properties=\"Excel 8.0;HDR=FALSE;IMEX=1\";Data Source=" + filepath;
                string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;data source=" + filepath + ";Extended Properties='Excel 12.0 Xml;HDR=YES'";
                
using (OleDbConnection conn = new OleDbConnection(connStr))
                {
                    conn.Open();
                    
string sql = "select * from [" + tableName+ "]";
                    OleDbCommand oc 
= new OleDbCommand(sql, conn);
                    OleDbDataAdapter oda 
= new OleDbDataAdapter(oc);
                    oda.Fill(r);
                }
            }
            
return r;
        }

        
/// <summary>
        
/// 读取表中的数据
        
/// </summary>
        
/// <param name="filepath"></param>
        
/// <param name="tableIndex">表索引,几第n个表</param>
        
/// <returns></returns>
        public static DataTable GetTableData(string filepath, int tableIndex)
        {
            var ts
= GetTables(filepath);
            
if (ts.Count > tableIndex)
            {
                
string tableName = ts[tableIndex];
                DataTable r 
= new DataTable();
                
if (File.Exists(filepath))
                {
                    
//string connStr = "Provider=Microsoft.Jet." + "OLEDB.4.0;Extended Properties=\"Excel 8.0;HDR=FALSE;IMEX=1\";Data Source=" + filepath;
                    string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;data source=" + filepath + ";Extended Properties='Excel 12.0 Xml;HDR=YES'";
                    
using (OleDbConnection conn = new OleDbConnection(connStr))
                    {
                        conn.Open();
                        
string sql = "select * from [" + tableName + "]";
                        OleDbCommand oc 
= new OleDbCommand(sql, conn);
                        OleDbDataAdapter oda 
= new OleDbDataAdapter(oc);
                        oda.Fill(r);
                    }
                }
                
return r;
            }
            
else
            {
                
return null;
            }
        }

        
/// <summary>
        
/// 获取表结构(表的字段)
        
/// </summary>
        
/// <param name="filepath"></param>
        
/// <param name="tableName"></param>
        
/// <returns></returns>
        public static System.Collections.Generic.List<string> GetTableFields(string filepath, string tableName)
        {
            List
<string> r=new List<string>();
            
if (File.Exists(filepath))
            {
                
//string connStr = "Provider=Microsoft.Jet." + "OLEDB.4.0;Extended Properties=\"Excel 8.0;HDR=FALSE;IMEX=1\";Data Source=" + filepath;
                string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;data source=" + filepath + ";Extended Properties='Excel 12.0 Xml;HDR=YES'";
                
using (OleDbConnection conn = new OleDbConnection(connStr))
                {
                    conn.Open();
                    
string sql = "select * from [" + tableName + "] where 1=2";
                    OleDbCommand oc 
= new OleDbCommand(sql, conn);
                    OleDbDataAdapter oda 
= new OleDbDataAdapter(oc);
                    DataTable dt 
= new DataTable();
                    oda.Fill(dt);
                    
for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        r.Add(dt.Columns[i].Caption);
                    }
                }
            }
            
return r;
        }
    


    }

 

posted @ 2011-02-21 15:36  zyip  阅读(348)  评论(0编辑  收藏  举报