读书人

怎么在程序中列出Excel表的列名

发布时间: 2012-02-15 12:09:44 作者: rapoo

如何在程序中列出Excel表的列名?
如何在程序中列出Excel表的列名?

[解决办法]
首先程序识别此文件 找到标题行 对象思想解决。
[解决办法]
OLEDB连接excel,然后select * from sheet1 where 1=0,把结果装到DataSet 中,然后循环取DataTable的column,column的name就是列名
[解决办法]

C# code
 public IList<string> GetColumnsBySheet(string MyFullFileName, string MySheetName)        {            try            {                IList<String> fields = new List<String>();                DataTable dt = GetSheetData(MyFullFileName,MySheetName);                foreach (DataColumn dc in dt.Columns)                {                    fields.Add(dc.ColumnName);                }                fields.Insert(0, "Not In My File");                return fields;            }            catch (System.Exception ex)            {                throw ex;            }        }       protected DataTable GetSheetData(string MyFullFileName,string MySheetName)        {            try            {                return GetSheetData(MyFullFileName,"select top 0 * from [" + MySheetName + "]");            }            catch (Exception ex)            {                throw ex;            }        }     protected DataTable GetSheetData(string MyFullFileName,string CmdString)        {            DataTable dt = null;            OleDbConnection conn = new OleDbConnection();            try            {                conn.ConnectionString = GetConnection(FullFileName);                conn.Open();                OleDbDataAdapter adp = new OleDbDataAdapter(CmdString, conn);                DataSet ds = new DataSet();                adp.Fill(ds);                dt = ds.Tables[0];            }            catch (Exception ex)            {                throw ex;            }            finally            {                conn.Close();            }            return dt;        } protected string GetConnection(string MyFullFileName)        {            string cnn = string.Empty;            switch (UpLoadFileType)            {                 case FileType.Access:                    cnn= "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + MyFullFileName;                    break;                case FileType.Excel:                    cnn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + MyFullFileName + "; Extended Properties=Excel 8.0";                    break;                case FileType.Text:                    cnn = @"Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + System.IO.Directory.GetParent(MyFullFileName).FullName + @";Extended Properties=""text;HDR=Yes;FMT=Delimited""";                    break;                default:                    throw new Exception("FileType is Wrong!");            }            return cnn;        } 

读书人网 >C#

热点推荐