zoukankan      html  css  js  c++  java
  • 读取Excel里面的内容转为DataTable

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.OleDb;
    using System.Linq;
    using System.Text;
    
    namespace ExcelRead
    {
        class ExcelHelper
        {
            private static string excelConstr;
            private OleDbConnection conn = null;//操作数据库
            private OleDbDataAdapter ada = null;//填充dataset
            public ExcelHelper(string path)
            {
                excelConstr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties = Excel 12.0";
                if (conn == null || conn.State == ConnectionState.Closed)
                {
                    conn = new OleDbConnection(excelConstr);
                }
            }
    
            public DataTable GetDataSource(string sheetName)
            {
                DataTable dt = new DataTable();
                string sql = string.Empty;
                sql = "select * from [" + sheetName + "]";
                dt = GetDT(sql);
                return dt;
            }
    
            /// <summary>
            /// 获取excel数据
            /// </summary>
            /// <param name="sql">用于查询的sql</param>
            /// <returns></returns>
            public DataTable GetDT(string sql)
            {
                DataSet ds = new DataSet();
                try
                {
                    if (conn.State == ConnectionState.Closed)
                    {
                        conn.Open();
                    }
                    ada = new OleDbDataAdapter(sql, conn);
                    ada.Fill(ds);
                }
                catch (Exception e)
                {
                    throw e;
                }
                finally
                {
                    conn.Close();
                }
                return ds.Tables[0];
            }
        }
    }
    

      

    //获取Excel表里Sheet1的数据
    //调用 ExcelHelper _excelhelper = new ExcelHelper("Excel文件路径"); //Excel的sheet名称,后面要跟$符号 _excelhelper.GetDataSource("Sheet1$");

      

    第二种方式  
    /// <summary>
            /// 根据excel的文件的路径提取其中表的数据,不需要传sheet名称只需 
            ///excel路径即可
            /// </summary>
            /// <param name="Path">Excel文件的路径</param>
            private void GetDataFromExcelWithAppointSheetName(string Path)
            {
                //连接串
                string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
                OleDbConnection conn = new OleDbConnection(strConn);
                conn.Open();
    
                //返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等  
                DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });
    
                //包含excel中表名的字符串数组
                string[] strTableNames = new string[dtSheetName.Rows.Count];
                for (int k = 0; k < dtSheetName.Rows.Count; k++)
                {
                    strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString();
                }
    
                OleDbDataAdapter myCommand = null;
                DataTable dt = new DataTable();
    
                //从指定的表明查询数据,可先把所有表明列出来供用户选择
                string strExcel = "select * from [" + strTableNames[0] + "]";
                myCommand = new OleDbDataAdapter(strExcel, strConn);
                dt = new DataTable();
                myCommand.Fill(dt);
               
              
            }
    

      推荐使用第二种

  • 相关阅读:
    QT+Linux+FFmpeg+C/C++实现RTSP流存储为MP4视频文件
    FFmpeg接收RTSP并将H264保存为MP4
    第一次在此定义 多重定义 multiple definition of
    无法定位程序输入点_ZdaPvj于动态链接库 Qt5Core.dl Qt5Gui.dll上
    QObject::startTimer: QTimer can only be used with threads started with QThread
    ONVIF开发编译时提示stdsoap2.o中multiple definition of 'namespaces'问题的解决
    ONVIF开发(1)生成开发框架
    VUE从入门到放弃(项目全流程)————VUE
    UI库colorui的使用————小程序
    超简单详细的搭建个人网站————静态网站
  • 原文地址:https://www.cnblogs.com/macT/p/9889025.html
Copyright © 2011-2022 走看看