zoukankan      html  css  js  c++  java
  • EF DataTable扩展,Excel导出扩展,stackexchange.redis帮助类,ServiceStack.Redis帮助类/netCore Session 扩展

    常用的帮助类和相关扩展函数·mark一下,用到时直接Copy

    EF TO DataTable:

        public static class EFExtendMethod
        {
            public static DataTable SqlQueryToDataTable(this Database db, string sql, CommandType type = CommandType.Text, params SqlParameter[] param)
            {
                DataTable ret_dt = new DataTable();
                SqlConnection conn = db.Connection as SqlConnection;
                if (conn == null)
                {
                    conn = new SqlConnection(db.Connection.ConnectionString);
                }
    
                if (conn.State != ConnectionState.Open)
                {
                    conn.Open();
                }
    
                try
                {
                    SqlCommand cmd = new SqlCommand(sql, conn);
                    cmd.CommandType = type;
    
                    if (param != null && param.Length > 0)
                    {
                        foreach (SqlParameter p in param)
                        {
                            cmd.Parameters.Add(p);
                        }
                    }
    
                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    adapter.Fill(ret_dt);
    
                    conn.Close();
                    return ret_dt;
                }
                catch (Exception ex)
                {
                    conn.Close();
                    return ret_dt;
                }
            }
    
            public static DataTable SqlQueryToDataTable(this Database db, string sql, params SqlParameter[] param)
            {
                return SqlQueryToDataTable(db,sql,CommandType.Text,param);
            }
        }
    

      DataTable Excel 导出:

        public static class CSVFileHelper
        {
    
            public static string ToHtmlTable(this DataTable target)
            {
                return DataTableToHtmlTable(target);
            }
    
            public static string ToRootExcelFile(this DataTable target,string _fileName)
            {
                return SaveDataTableToRootExcelFile(_fileName, target);
            }
    
    
            public static string DataTableToHtmlTable(DataTable sourceData)
            {
                //
                var sbHtml = new StringBuilder();
                sbHtml.Append("<table border='1' cellspacing='0' cellpadding='0'>");
    
                sbHtml.Append("<tr>");
                DataColumnCollection columns = sourceData.Columns;
                foreach (DataColumn col in columns)
                {
                    sbHtml.AppendFormat("<td style='font-size: 14px;text-align:center;background-color: #DCE0E2; font-weight:bold;' height='25'>{0}</td>", col.ColumnName);
                }
                sbHtml.Append("</tr>");
    
                foreach (DataRow row in sourceData.Rows)
                {
                    sbHtml.Append("<tr>");
                    foreach (DataColumn col in columns)
                    {
                        sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>{0}</td>", row[col]);
                    }
                    sbHtml.Append("</tr>");
                }
                sbHtml.Append("</table>");
                return sbHtml.ToString();
            }
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="_fileName"></param>
            /// <param name="sourceData"></param>
            /// <returns></returns>
            public static string SaveDataTableToRootExcelFile(string _fileName,DataTable sourceData)
            {
                string FileName = _fileName;
                string dir = HttpRuntime.AppDomainAppPath.ToString() + "/SaveExcelFile/";
    
                FileName = dir + FileName;
    
                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }
    
                int numWriter = 1000;
                int numRecord = sourceData.Rows.Count;
    
                var sbHtml = new StringBuilder();
                sbHtml.Append("<table border='1' cellspacing='0' cellpadding='0'>");
    
                sbHtml.Append("<tr>");
                DataColumnCollection columns = sourceData.Columns;
                foreach (DataColumn col in columns)
                {
                    sbHtml.AppendFormat("<td style='font-size: 14px;text-align:center;background-color: #DCE0E2; font-weight:bold;' height='25'>{0}</td>", col.ColumnName);
                }
                sbHtml.Append("</tr>");
    
    
                using (FileStream fs = File.Open(FileName, FileMode.CreateNew, FileAccess.Write))
                {
                    using (StreamWriter sw = new StreamWriter(fs))
                    {
                        try
                        {
                            sw.Write(sbHtml.ToString());
    
                            sbHtml.Clear();
    
                            int i = 0;
                            foreach (DataRow row in sourceData.Rows)
                            {
    
                                sbHtml.Append("<tr>");
                                foreach (DataColumn col in columns)
                                {
                                    sbHtml.AppendFormat("<td style='font-size: 12px;height:20px;'>{0}</td>", row[col]);
                                }
                                sbHtml.Append("</tr>");
                                i++;
    
                                if (i == 1000)
                                {
                                    i = 0;
                                    sw.Write(sbHtml.ToString());
                                    sbHtml.Clear();
                                }
                            }
                            sw.Write("</table>");
                            sw.Close();
                            fs.Close();
                        }
                        catch (Exception ex)
                        {
                            sw.Close();
                            fs.Close();
                        }
                    }
                }
    
                return FileName;
            }
    
            /// <summary>
            /// 将DataTable中数据写入到CSV文件中
            /// </summary>
            /// <param name="dt">提供保存数据的DataTable</param>
            /// <param name="fullPath">CSV的文件路径</param>
            public static void SaveCSV(DataTable dt, string fullPath)
            {
                FileInfo fi = new FileInfo(fullPath);
                if (!fi.Directory.Exists)
                {
                    fi.Directory.Create();
                }
                FileStream fs = new FileStream(fullPath, System.IO.FileMode.Create, System.IO.FileAccess.Write);
                StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8);
                string data = "";
                //写出列名称
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    data += dt.Columns[i].ColumnName.ToString();
                    if (i < dt.Columns.Count - 1)
                    {
                        data += ",";
                    }
                }
                sw.WriteLine(data);
                //写出各行数据
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    data = "";
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        string str = dt.Rows[i][j].ToString();
                        str = str.Replace(""", """");//替换英文冒号 英文冒号需要换成两个冒号
                        if (str.Contains(',') || str.Contains('"')
                            || str.Contains('
    ') || str.Contains('
    ')) //含逗号 冒号 换行符的需要放到引号中
                        {
                            str = string.Format(""{0}"", str);
                        }
    
                        data += str;
                        if (j < dt.Columns.Count - 1)
                        {
                            data += ",";
                        }
                    }
                    sw.WriteLine(data);
                }
                sw.Close();
                fs.Close();
            }
    
            /// <summary>
            /// 将CSV文件的数据读取到DataTable中
            /// </summary>
            /// <param name="filePath">CSV文件路径</param>
            /// <returns>返回读取了CSV数据的DataTable</returns>
            public static DataTable OpenCSV(string filePath)
            {
                Encoding encoding = Encoding.GetEncoding("GB2312");
                DataTable dt = new DataTable();
                FileStream fs = new FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read);
    
                StreamReader sr = new StreamReader(fs, encoding);
                //记录每次读取的一行记录
                string strLine = "";
                //记录每行记录中的各字段内容
                string[] aryLine = null;
                string[] tableHead = null;
                //标示列数
                int columnCount = 0;
                //标示是否是读取的第一行
                bool IsFirst = true;
                //逐行读取CSV中的数据
                while ((strLine = sr.ReadLine()) != null)
                {
    
                    if (IsFirst == true)
                    {
                        tableHead = strLine.Split(',');
                        IsFirst = false;
                        columnCount = tableHead.Length;
                        //创建列
                        for (int i = 0; i < columnCount; i++)
                        {
                            DataColumn dc = new DataColumn(tableHead[i]);
                            dt.Columns.Add(dc);
                        }
                    }
                    else
                    {
                        aryLine = strLine.Split(',');
                        DataRow dr = dt.NewRow();
                        for (int j = 0; j < columnCount; j++)
                        {
                            dr[j] = aryLine[j];
                        }
                        dt.Rows.Add(dr);
                    }
                }
                if (aryLine != null && aryLine.Length > 0)
                {
                    dt.DefaultView.Sort = tableHead[0] + " " + "asc";
                }
    
                sr.Close();
                fs.Close();
                return dt;
            }
        }

    stackexchange.redis 帮助类

        public class RedisExChangeHelper : IDisposable
        {
            private ConnectionMultiplexer RedisMgr = null;
            public IDatabase Redis { get; private set; }
    
            static string RedisIPAddress = "127.0.0.1:6379";
    
            //默认缓存过期时间单位秒
            public int secondsTimeOut = 20 * 60;
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="RedisAddressList"></param>
            /// <param name="Password"></param>
            /// <param name="DbIndex"></param>
    
            public RedisExChangeHelper(int DbIndex = -1)
            {
                RedisMgr = ConnectionMultiplexer.Connect(RedisIPAddress);
    
                Redis = RedisMgr.GetDatabase(DbIndex);
            }
    
            public RedisExChangeHelper(IList<string> RedisAddressList = null, string Password = "", int DbIndex = -1)
            {
                ConfigurationOptions opt = new ConfigurationOptions
                {
                    CommandMap = CommandMap.Create(new HashSet<string>
                    {
                        "INFO", "CONFIG", "CLUSTER",
                        "PING", "ECHO", "CLIENT"
                    }, available: false),
                    KeepAlive = 120
                };
    
                if (RedisAddressList == null )
                {
                    RedisAddressList.Add("127.0.0.1:6379");
                }
    
                if (!string.IsNullOrEmpty(Password))
                {
                    opt.Password = Password;
                }
    
    
                foreach (var item in RedisAddressList)
                {
                    opt.EndPoints.Add(item);
                }
    
                RedisMgr = ConnectionMultiplexer.Connect(opt);
    
                Redis = RedisMgr.GetDatabase(DbIndex);
            }
    
            /// <summary>
            /// 切换当前DB
            /// </summary>
            /// <param name="Index"></param>
            /// <returns></returns>
            public bool SwitchDB(int Index)
            {
                IDatabase _redis = RedisMgr.GetDatabase(Index);
                if (_redis != null)
                {
                    Redis = _redis;
                    return true;
                }
                else
                {
                    return false;
                }
    
            }
    
            /// <summary>
            /// 距离过期时间还有多少时间
            /// </summary>
            /// <param name="key"></param>
            /// <returns></returns>
            public TimeSpan TTL(string key)
            {
                return Redis.KeyTimeToLive(key).Value;
            }
            /// <summary>
            /// 设置过期时间(秒)
            /// </summary>
            /// <param name="key"></param>
            /// <param name="timeout"></param>
            public void Expire(string key, int timeout = 0)
            {
                if (timeout >= 0)
                {
                    if (timeout > 0)
                    {
                        secondsTimeOut = timeout;
                    }
    
                    var timespan = TTL(key).Add(new TimeSpan(0,0, timeout));
                    Redis.KeyExpire(key, timespan);
                }
            }
    
            /// <summary>
            /// 设置过期时间
            /// </summary>
            /// <param name="key"></param>
            /// <param name="timeout"></param>
            public void Expire(string key, TimeSpan timeout)
            {
                if (timeout.TotalMilliseconds >= 0)
                {
                    if (timeout.TotalMilliseconds > 0)
                    {
                        secondsTimeOut = (int)timeout.TotalMilliseconds;
                    }
    
                    Redis.KeyExpire(key, timeout);
                }
            }
    
    
            #region Key/Value存储
    
            /// <summary>
            /// 添加缓存
            /// </summary>
            /// <param name="key">缓存建</param>
            /// <param name="value">缓存值</param>
            /// <param name="timeout">过期时间,单位秒,-1:不过期,0:默认过期时间</param>
            /// <returns></returns>
            public bool Set(string key, string value, int timeout = 0)
            {
                int def_time = secondsTimeOut;
                if (timeout >= 0)
                {
                    if (timeout > 0)
                    {
                        def_time = timeout;
                    }
                }
    
                TimeSpan timespan = new TimeSpan(0, 0, def_time);
                return Redis.StringSet(key, value, timespan);
            }
    
            /// <summary>
            /// 添加缓存
            /// </summary>
            /// <param name="key"></param>
            /// <param name="value"></param>
            /// <param name="timeout"></param>
            /// <returns></returns>
            public Task<bool> SetAsync(string key, string value, int timeout = 0)
            {
                int def_time = secondsTimeOut;
                if (timeout >= 0)
                {
                    if (timeout > 0)
                    {
                        def_time = timeout;
                    }
                }
    
                TimeSpan timespan = new TimeSpan(0, 0, def_time);
                return Redis.StringSetAsync(key, value, timespan);
            }
    
            /// <summary>
            /// 添加
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="key">缓存建</param>
            /// <param name="t">缓存值</param>
            /// <param name="timeout">过期时间,单位秒,-1:不过期,0:默认过期时间</param>
            /// <returns></returns>
            public bool Set<T>(string key, T value, int timeout = 0)
            {
                int def_time = secondsTimeOut;
                if (timeout >= 0)
                {
                    if (timeout > 0)
                    {
                        def_time = timeout;
                    }
                }
    
                string val_json = JsonConvert.SerializeObject(value);
                TimeSpan timespan = new TimeSpan(0, 0, def_time);
                return Redis.StringSet(key,val_json, timespan);
            }
    
            /// <summary>
            /// 添加
            /// </summary>
            /// <param name="key"></param>
            /// <param name="sec"></param>
            /// <param name="value"></param>
            public void SetEX(string key, int sec, string value)
            {
                SetEX<string>(key, sec, value);
            }
    
            /// <summary>
            /// 添加
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="key"></param>
            /// <param name="sec"></param>
            /// <param name="value"></param>
            public void SetEX<T>(string key,int sec, T value)
            {
                TimeSpan timespan = new TimeSpan(0, 0, sec);
    
                var str = JsonConvert.SerializeObject(value);
    
                Redis.StringSet(key, str, timespan);
            }
    
            /// <summary>
            /// 获取缓存
            /// </summary>
            /// <param name="key"></param>
            /// <returns></returns>
            public string Get(string key)
            {
                string data = Redis.StringGet(key);
                return data;
            }
    
            /// <summary>
            /// 获取缓存
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="key"></param>
            /// <returns></returns>
            public T Get<T>(string key)
            {
                string data = Redis.StringGet(key);
                if (data != null)
                {
                    return JsonConvert.DeserializeObject<T>(data);
                }
    
                return default(T);
            }
            /// <summary>
            /// 删除
            /// </summary>
            /// <param name="key"></param>
            /// <returns></returns>
            public bool Remove(string key)
            {
                return Redis.KeyDelete(key);
            }
    
            /// <summary>
            /// 删除
            /// </summary>
            /// <param name="key"></param>
            /// <returns></returns>
            public Task<bool> RemoveAsync(string key)
            {
                return Redis.KeyDeleteAsync(key);
            }
    
            /// <summary>
            /// 删除
            /// </summary>
            /// <param name="key"></param>
            /// <returns></returns>
            public bool Delete(string key)
            {
                return Redis.KeyDelete(key);
            }
    
            /// <summary>
            /// 删除
            /// </summary>
            /// <param name="key"></param>
            /// <returns></returns>
            public Task<bool> DeleteAsync(string key)
            {
                return Redis.KeyDeleteAsync(key);
            }
    
            #endregion
    
            //释放资源
            public void Dispose()
            {
                if (RedisMgr != null)
                {
                    RedisMgr.Close();
                }
                if (Redis != null)
                {
                    Redis = null;
                }
                GC.Collect();
            }
        }

    ServiceStack.Redis 帮助类

       public class RedisHelper : IDisposable
        {
            private RedisClient Redis = new RedisClient(RedisIPAddress);
    
            //缓存池
            PooledRedisClientManager prcm = new PooledRedisClientManager();
    
            static string RedisIPAddress = "127.0.0.1:6379";
            static string RedisPassport = "";
            static string RedisPassword = "";
    
            /// <summary>
            /// 这里根据情况自己编写初始化
            /// </summary>
            static public void Init()
            {
                RedisIPAddress = ConfigurationManager.AppSettings["RedisIPAddress"];
                RedisPassport = ConfigurationManager.AppSettings["RedisPassport"];
                RedisPassword = ConfigurationManager.AppSettings["RedisPassword"];
            } 
    
            //默认缓存过期时间单位秒
            public int secondsTimeOut = 20 * 60;
    
            public RedisHelper(bool OpenPooledRedis = false)
            {
    
                if (OpenPooledRedis)
                {
                    prcm = CreateManager(new string[] { RedisIPAddress }, new string[] { RedisIPAddress });
                    Redis = prcm.GetClient() as RedisClient;
                }
            }
    
            /// <summary>
            /// 缓冲池
            /// </summary>
            /// <param name="readWriteHosts"></param>
            /// <param name="readOnlyHosts"></param>
            /// <returns></returns>
            public static PooledRedisClientManager CreateManager(string[] readWriteHosts, string[] readOnlyHosts)
            {
                return new PooledRedisClientManager(readWriteHosts, readOnlyHosts,
                    new RedisClientManagerConfig
                    {
                        MaxWritePoolSize = readWriteHosts.Length * 5,
                        MaxReadPoolSize = readOnlyHosts.Length * 5,
                        AutoStart = true,
                    });
            }
    
            /// <summary>
            /// 距离过期时间还有多少秒
            /// </summary>
            /// <param name="key"></param>
            /// <returns></returns>
            public long TTL(string key)
            {
                return Redis.Ttl(key);
            }
            /// <summary>
            /// 设置过期时间
            /// </summary>
            /// <param name="key"></param>
            /// <param name="timeout"></param>
            public void Expire(string key, int timeout = 0)
            {
                if (timeout >= 0)
                {
                    if (timeout > 0)
                    {
                        secondsTimeOut = timeout;
                    }
                    Redis.Expire(key, secondsTimeOut);
                }
            }
    
            #region Key/Value存储
    
            /// <summary>
            /// 设置缓存
            /// </summary>
            /// <param name="key">缓存建</param>
            /// <param name="value">缓存值</param>
            /// <param name="timeout">过期时间,单位秒,-1:不过期,0:默认过期时间</param>
            /// <returns></returns>
            public bool Set(string key, string value, int timeout = 0)
            {
                Redis.Set(key, value);
                if (timeout >= 0)
                {
                    if (timeout > 0)
                    {
                        secondsTimeOut = timeout;
                    }
                    Redis.Expire(key, secondsTimeOut);
                }
                return true;
            }
    
            /// <summary>
            /// 设置缓存
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="key">缓存建</param>
            /// <param name="t">缓存值</param>
            /// <param name="timeout">过期时间,单位秒,-1:不过期,0:默认过期时间</param>
            /// <returns></returns>
            public bool Set<T>(string key, T t, int timeout = 0)
            {
                Redis.Set<T>(key, t);
                if (timeout >= 0)
                {
                    if (timeout > 0)
                    {
                        secondsTimeOut = timeout;
                    }
                    Redis.Expire(key, secondsTimeOut);
                }
                return true;
    
            }
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="key"></param>
            /// <param name="sec"></param>
            /// <param name="value"></param>
            public void SetEX(string key, int sec, string value)
            {
                SetEX<string>(key, sec, value);
            }
    
            /// <summary>
            /// 
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="key"></param>
            /// <param name="sec"></param>
            /// <param name="value"></param>
            public void SetEX<T>(string key,int sec, T value)
            {
                var str = JsonConvert.SerializeObject(value);
                Redis.SetEx(key, sec, Encoding.UTF8.GetBytes(str));
            }
    
            /// <summary>
            /// 获取缓存
            /// </summary>
            /// <param name="key"></param>
            /// <returns></returns>
            public string Get(string key)
            {
                var data = Redis.Get(key);
                if (data != null)
                {
                    return Encoding.UTF8.GetString(data);
                }
                return String.Empty;
            }
    
            /// <summary>
            /// 获取缓存
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="key"></param>
            /// <returns></returns>
            public T Get<T>(string key)
            {
                return Redis.Get<T>(key);
            }
            /// <summary>
            /// 删除
            /// </summary>
            /// <param name="key"></param>
            /// <returns></returns>
            public bool Remove(string key)
            {
                return Redis.Remove(key);
            }
            #endregion
    
            //释放资源
            public void Dispose()
            {
                if (Redis != null)
                {
                    Redis.Dispose();
                    Redis = null;
                }
                GC.Collect();
            }
        }

     netCore  Session 读写Object扩展:

     public static class SessionExtensions
        {
            public static void SetObject(this ISession session, string key, object value)
            {
                session.SetString(key, JsonConvert.SerializeObject(value));
            }
    
            public static T GetObject<T>(this ISession session, string key)
            {
                var value = session.GetString(key);
                return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value);
            }
        }
  • 相关阅读:
    xutils3批量上传文件
    超详细Android面试的准备与经历分享 | 百度(offer)
    [网站公告]3月10日23:00-4:00阿里云SLB升级,会有4-8次连接闪断团队
    上周热点回顾(3.2-3.8)团队
    发布新博客皮肤red_autumnal_leaves团队
    上周热点回顾(2.23-3.1)团队
    上周热点回顾(2.16-2.22)团队
    上周热点回顾(2.2-2.8)团队
    如何禁止IE自动生成链接团队
    [云上天气预报-有时有闪电]2月3日23:00-4:00阿里云SLB升级期间网络会闪断团队
  • 原文地址:https://www.cnblogs.com/linqing/p/6901719.html
Copyright © 2011-2022 走看看