静坐常思己过,闲谈莫论人非,能受苦乃为志士,肯吃亏不是痴人,敬君子方显有德,怕小人不算无能,退一步天高地阔,让三分心平气和,欲进步需思退步,若着手先虑放手,如得意不宜重往,凡做事应有余步。持黄金为珍贵,知安乐方值千金,事临头三思为妙,怒上心忍让最高。切勿贪意外之财,知足者人心常乐。若能以此去处事,一生安乐任逍遥。

取得Excel表结构

作者:大鹏 发布于:2008-3-11 22:56 Tuesday 分类:Asp.Net 2.0

今天才发现这个GetOleDbSchemaTable还挺管用的。可以通个这个方法得到Excel文件中有多少个Sheet表并可以列出每个Sheet表的结构,包括表中字段的结构是否主键等信息。和ADO.NET 中 DataReader 对象的 GetSchemaTable很类似。

[codes=c#]
DialogResult dr = openFileDialog1.ShowDialog();
            string path;
            if (dr == DialogResult.OK)
            {
                //MessageBox.Show(openFileDialog1.FileName);
                path = openFileDialog1.FileName;
                string excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + path + ";" + "Extended Properties=Excel 8.0;";
                OleDbConnection excelConn = new OleDbConnection(excelConnectionString);
                excelConn.Open();
                try
                {
                    DataTable dt = excelConn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, "sheet1$", null });
                    //cbbSheets.Items.Clear();
                    //for (int i = 0; i < dt.Rows.Count; i++)
                    //{
                    //    cbbSheets.Items.Add(dt.Rows[i]["TABLE_NAME"].ToString());
                    //}
                    dataGridView1.DataSource = dt.DefaultView;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error:" + ex.Message, "Error:", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                finally
                {
                    excelConn.Close();
                }
[/codes]


标签: 数据结构 数据库 c# sqlserver2005 excel

et_highlighter
发表评论 »本文目前尚无任何评论

发表评论

干净网络从你做起,切勿黏贴小广告