• 一个简单的C# Excel oledb帮助类


    public class ExcelOledbHelper
        {
            private readonly string connectionStr;
            /// <summary>
            /// 
            /// </summary>
            /// <param name="pathOfExcel">path of Excel, extension must be ".xlsx" or ".xls".</param>
            /// <param name="mode">0->export mode,write /1->import mode,read /2->linked mode,full</param>
            /// <param name="hasHeader">"true" means first row is head.</param>
            public ExcelOledbHelper(string pathOfExcel,int mode,bool hasHeader)
            {
                if (System.IO.File.Exists(pathOfExcel))
                {
                    string hdr = hasHeader == true ? "Yes" : "No";
                    this.connectionStr = new FileInfo(pathOfExcel).Extension switch
                    {
                        ".xlsx" => $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='{pathOfExcel}';Extended Properties='Excel 12.0;HDR={hdr};IMEX={mode};'",
                        ".xls"=> $"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='{pathOfExcel}';Extended Properties='Excel 8.0;HDR={hdr};IMEX={mode};'",
                        _=> throw new ArgumentException("Excel文件扩展名错误,应是“.xlsx”或“.xls”。")
                    };
                }
                else
                    throw new ArgumentException($"Excel文件路径:{pathOfExcel} 不存在!");
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="commandText">SQL clause</param>
            /// <param name="tableName">data table's name</param>
            /// <returns></returns>
            public DataTable ExecuteDataTable(string commandText,string tableName)
            {
                using OleDbConnection connection = new OleDbConnection(this.connectionStr);
                using OleDbCommand command = connection.CreateCommand();
                command.CommandText = commandText;
                using OleDbDataAdapter dataAdapter = new OleDbDataAdapter(command);
                DataTable dataTable = new DataTable(tableName);
                dataAdapter.Fill(dataTable);
                return dataTable;
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="commandTextList"> list of SQL clauses</param>
            /// <param name="tableNameList"> names list of data tables,each name correspond to a sql clause executed result.</param>
            /// <returns></returns>
            public DataSet ExecuteDataSet(List<string> commandTextList,List<string> tableNameList )
            {
                if (commandTextList.Count != tableNameList.Count)
                    throw new ArgumentException("传入的SQL查询字符串列表与结果表名字符串列表数量不一致!");
                DataSet dataSet = new DataSet();
                for (int i = 0; i < commandTextList.Count; i++)
                {
                    DataTable dataTable = ExecuteDataTable(commandTextList[i], tableNameList[i]);
                    dataSet.Tables.Add(dataTable);
                }
                return dataSet;
            }
            /// <summary>
            /// get all contents of given tables.
            /// </summary>
            /// <param name="tableNameList">names list of data tables(sheets in Excel)</param>
            /// <returns></returns>
            public DataSet ExecuteDataSet(List<string> tableNameList)
            {
                DataSet dataSet = new DataSet();
                foreach (var name in tableNameList)
                {
                    DataTable dataTable = ExecuteDataTable($"SELECT * FROM [{name}$]", name);
                    dataSet.Tables.Add(dataTable);
                }
                return dataSet;
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="commandTexts"> sql clauses.</param>
            public void ExecuteNoneQuery(List<string> commandTexts)
            {
                using OleDbConnection connection = new OleDbConnection(this.connectionStr);
                connection.Open();
                using OleDbCommand command = connection.CreateCommand();
                using OleDbTransaction transaction = connection.BeginTransaction();
                command.Transaction = transaction;
                try
                {
                    foreach (var item in commandTexts)
                    {
                        command.CommandText = item;
                        command.ExecuteNonQuery();
                    }
                    transaction.Commit();
                }
                catch (OleDbException exp)
                {
                    transaction.Rollback();
                    throw new Exception("SQL语句执行错误。
    "+ exp.Message+"
    "+exp.StackTrace);
                }
                finally
                {
                    transaction.Dispose();
                    command.Dispose();
                    connection.Close();
                }
            }
        }
    }
    
  • 相关阅读:
    .bat文件打开指定网页,并运行jar包
    jar包制作一个可执行文件
    如何让局域网其他电脑通过IP直接访问自己电脑的网站
    Sypder 安装和使用
    tomcat服务器输入localhost可以访问,ip无法访问解决办法
    【转载】高性能网站建设
    网站优化
    JavaWeb 项目开发中的技术总结
    反射工具类——ReflectUtils
    Ajax 的缺点
  • 原文地址:https://www.cnblogs.com/yzhyingcool/p/12953127.html
Copyright © 2020-2023  润新知