首页 > Web开发 > 详细

.net 打开Excel文档并转为DataTable

时间:2014-05-10 08:11:46      阅读:419      评论:0      收藏:0      [点我收藏+]

 

bubuko.com,布布扣
bubuko.com,布布扣
        /// <summary>
        /// 打开Excel文档并转为DataTable
        /// </summary>
        /// <returns></returns>
        public static DataTable ExcelWorksheetToDataTable()
        {
            DataTable dtExecl = new DataTable();
            double Ver = GetExcelVer();
            if (Ver <= 0)
            {
                MessageBox.Show("The computer does not have Excel installed.", "prompt");
                return null;
            }
            string ExcelFile = "";
            OpenFileDialog ofd = new OpenFileDialog();
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                OleDbConnection conn = null;
                ExcelFile = ofd.FileName;
                if (ExcelFile.Length > 0)
                {
                    try
                    {
                        string StrConn = "Provider={0};" + "Data Source=" + ExcelFile + ";" + "Extended Properties=‘Excel {1};HDR=YES; IMEX=1‘";
                        if ((new System.IO.FileInfo(ExcelFile).Extension).ToLower() == ".xlsx")
                        {
                            StrConn = string.Format(StrConn, "Microsoft.ACE.OLEDB.12.0", "12.0");
                        }
                        else
                        {
                            StrConn = string.Format(StrConn, "Microsoft.Jet.OLEDB.4.0", "8.0");
                        }

                        conn = new OleDbConnection(StrConn);
                        DataSet ds = new DataSet();
                        conn.Open();
                        OleDbDataAdapter myCommand = null;
                        myCommand = new OleDbDataAdapter("select * from [sheet1$]", StrConn);
                        myCommand.Fill(ds, "sheet1");
                        if (ds != null && ds.Tables.Count > 0)
                        {
                            dtExecl = ds.Tables[0];
                            if (!dtExecl.Columns.Contains("IntAUID"))
                            {
                                dtExecl.Columns.Add("IntAUID", typeof(int));
                            }
                            int i = 1;
                            foreach (DataRow dr in dtExecl.Rows)
                            {
                                dr["IntAUID"] = i;
                                i += 1;
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        MessageBox.Show(e.ToString());
                        return null;
                    }
                    finally
                    {
                        conn.Close();
                        conn.Dispose();
                    }
                }
            }
            return dtExecl;
        }
View Code
bubuko.com,布布扣

Code by 博客园-曹永思

bubuko.com,布布扣
bubuko.com,布布扣
        /// <summary>
        /// 获取当前计算机安装Excel版本号
        /// </summary>
        /// <returns></returns>
        private static double GetExcelVer()
        {
            Type objExcelType = Type.GetTypeFromProgID("Excel.Application");
            if (objExcelType == null)
            {
                return 0;
            }
            object objApp = Activator.CreateInstance(objExcelType);
            if (objApp == null)
            {
                return 0;
            }
            object objVer = objApp.GetType().InvokeMember("Version", BindingFlags.GetProperty, null, objApp, null);
            double Ver = Convert.ToDouble(objVer.ToString());
            return Ver;
        }
View Code
bubuko.com,布布扣

 

.net 打开Excel文档并转为DataTable,布布扣,bubuko.com

.net 打开Excel文档并转为DataTable

原文:http://www.cnblogs.com/yonsy/p/3719139.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!