zoukankan      html  css  js  c++  java
  • 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;
            }
        


        }
  • 相关阅读:
    初识增长黑客Growth Hacker
    OpenCV学习目录(持续更新)
    leetcode算法-回文判断
    leetcode算法-整数反转
    日常撸题技巧【总结】
    hihocoder 题目类型整理
    【hiho】92-93--素数【数论】
    notepad打造成C/C++IDE【Notepad】
    ACM知识点总结【杂】
    Nastya Studies Informatics
  • 原文地址:https://www.cnblogs.com/zyip/p/1959795.html
Copyright © 2011-2022 走看看