分享

VS2010 C# 连接Excel

 赵静Library 2015-02-10
var fileType = Path.GetExtension(excelFileFullPath.ToLower()).Trim();
            var excelVersionNumber = fileType == ".xlsx" ? "12.0" : "8.0";

            OleDbConnection objConn = null;
            DataTable dt = null;
            var sheetList = new List<string>();

            try
            {
                var connString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0} ;"
                    + "Extended Properties=\"Excel {1};HDR=Yes;IMEX=1;\"",
                    excelFileFullPath, excelVersionNumber);

                objConn = new OleDbConnection(connString);
                objConn.Open();
                dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

                if (dt == null)
                {
                    return;
                }

                //读取Excel文件中所有表单
                foreach (DataRow row in dt.Rows)
                {

                    var sheetName = row["TABLE_NAME"].ToString();

                    sheetList.Add(sheetName);
                    TabPage tab = new TabPage(sheetName.Substring(0, sheetName.LastIndexOf('$')));
                    string strExcel = string.Format("select * from [{0}]", sheetName);
                    OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, connString);

                    Utility.SetLableText(labExcelImportInfo, string.Format("正在加载Excel表【{0}】数据!", sheetName));

                    adapter.Fill(importDataSet, sheetName);

                    DataGridView view = new DataGridView();
                    view.AllowUserToAddRows = false;
                    view.AllowUserToDeleteRows = false;
                    view.RowPostPaint += new DataGridViewRowPostPaintEventHandler(dataGridView1_RowPostPaint);
                    view.DataSource = importDataSet.Tables[sheetName];
                    view.Tag = importDataSet;
                    view.Update();
                    view.Dock = DockStyle.Fill;
                    tab.Controls.Add(view);
                    tabControl2.TabPages.Add(tab);
                }
            }
            catch (Exception ex)
            {
                string strExInfo = string.Format("加载Excel表数据失败!", ex.Message);
                Program.ExcepitonAuditLog(PriFunction.PF_VM_REGPHOTO_MANAGER_IMPORT, strExInfo, false);
                //MessageBox.Show(ex.Message);
                Utility.SetLableText(labExcelImportInfo, string.Format("加载Excel失败!", ex.Message));
                return;
            }
            finally
            {
                if (objConn != null)
                {
                    objConn.Close();
                    objConn.Dispose();
                }
                if (dt != null)
                {
                    dt.Dispose();
                }
            }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约