zoukankan      html  css  js  c++  java
  • .net 打开Excel文档并转为DataTable

            /// <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

    Code by 博客园-曹永思

            /// <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
  • 相关阅读:
    epoll讲解
    Majority Element
    Excel Sheet Column Title
    Git链接到自己的Github(2)进阶使用
    Git链接到自己的Github(1)简单的开始
    直接管理内存
    Oracle 11g 编译使用BBED
    Oracle数据库该如何着手优化一个SQL
    Oracle配置数据库诊断
    Oracle 数据库重放(Database Replay)功能演示
  • 原文地址:https://www.cnblogs.com/yonsy/p/3719139.html
Copyright © 2011-2022 走看看