zoukankan      html  css  js  c++  java
  • 把Excel作为数据库,读到DataTable中,Excel科学计数法数字转字符串

    需要引用:using System.Data.OleDb;

    /// <summary>
            /// 获取Excel数据,包含所有sheet
            /// </summary>
            /// <param name="fullPath"></param>
            /// <returns></returns>
            public DataSet GetExcelTables(string fullPath)
            {
                DataSet ds = new DataSet();
                if (File.Exists(fullPath))
                {
                    //HDR=No 第一行就是数据
                    string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fullPath + ";Extended Properties='Excel 12.0;HDR=No;IMEX=1;'";
                    using (OleDbConnection conn = new OleDbConnection(strConn))
                    {
                        conn.Open();
                        foreach (DataRow item in conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null).Rows)
                        {
                            string tableName = item[2].ToString().Trim();
                            DataTable dt = new DataTable();
                            dt.TableName = tableName;
                            OleDbDataAdapter odda = new OleDbDataAdapter("select * from [" + tableName + "]", conn);
                            odda.Fill(dt);
                            ds.Tables.Add(dt);
                        }
                    }
                }
                return ds;
            }

    Excel有两种格式:.xls(office2003) 和 .xlsx(office2007),xlsx需要用12.0的驱动,

    下载地址:http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe

    .xlsx(office2007)连接字符串:Provider=Microsoft.ACE.OLEDB.12.0;Data Source=表格绝对路径;Extended Properties='Excel 12.0;HDR=No;IMEX=1;'

    .xls(office2003)连接字符串:Provider=Microsoft.Jet.Oledb.4.0;Data Source=表格绝对路径;Extended Properties='Excel 8.0;HDR=YES;IMEX=1;'

    说明:HDR=No,意思是表格中的第一行就是数据,不是表头,系统会自动生成列;HDR=Yes,意思是表格中的第一行是表头,系统会把第一行当做DataTable的列名。

    当 IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。
    当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。
    当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。
    特别注意:IMEX=1的时候,读取Excel的时候会把科学计数法的数字自动转字符串,我就被这个地方坑了一下,导致我总是读不到对的数据。

  • 相关阅读:
    Python排列函数:sort、sorted
    Python高阶函数:map、reduece、filter
    Python:容器、迭代对象、迭代器、生成器及yield关键字
    JPA-映射-(@OneToOne)双向一对一
    JPA-映射-(@OneToMany、@ManyToOne)双向一对多
    JPA-映射-(@OneToMany)单向一对多
    JPA-映射-(@ManyToOne)单向多对一
    JPA-EntityManager.merge()
    JPA-API
    leetcode 2.Add Two Numbers
  • 原文地址:https://www.cnblogs.com/xsj1989/p/5125315.html
Copyright © 2011-2022 走看看