C#200个基础工具类,史上最全快收藏下载
生活随笔
收集整理的這篇文章主要介紹了
C#200个基础工具类,史上最全快收藏下载
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
場景
包含工具類部分如下:
CSV文件轉換;DataTable轉實體;Excel操作類;FTP操作類;Html操作類;IP輔助類;JSON操作;JS操作;URL的操作類;XML操作類;處理多媒體的公共類;彈出消息類;二維碼操作類;漢字轉拼音;加密解密;科學計數,數學;類型轉換;配置文件操作類;上傳下載;時間操作類;視頻幫助類;數據展示控件綁定數據類;條形碼幫助類;圖片操作類;文件操作類;序列化;壓縮解壓縮;郵件;字符串。
?
?
實現
部分代碼展示
Excel導出類
using System; using System.Web; using System.Web.UI; using System.IO; using System.Web.UI.WebControls;namespace Common.Utility {public class ExportExcel{protected void ExportData(string strContent, string FileName){FileName = FileName + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString();HttpContext.Current.Response.Clear();HttpContext.Current.Response.Charset = "gb2312";HttpContext.Current.Response.ContentType = "application/ms-excel";HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;//this.Page.EnableViewState = false;// 添加頭信息,為"文件下載/另存為"對話框指定默認文件名HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + ".xls");// 把文件流發送到客戶端HttpContext.Current.Response.Write("<html><head><meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">");HttpContext.Current.Response.Write(strContent);HttpContext.Current.Response.Write("</body></html>");// 停止頁面的執行//Response.End();}/// <summary>/// 導出Excel/// </summary>/// <param name="obj"></param>public void ExportData(GridView obj){try{string style = "";if (obj.Rows.Count > 0){style = @"<style> .text { mso-number-format:\@; } </style> ";}else{style = "no data.";}HttpContext.Current.Response.ClearContent();DateTime dt = DateTime.Now;string filename = dt.Year.ToString() + dt.Month.ToString() + dt.Day.ToString() + dt.Hour.ToString() + dt.Minute.ToString() + dt.Second.ToString();HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=ExportData" + filename + ".xls");HttpContext.Current.Response.ContentType = "application/ms-excel";HttpContext.Current.Response.Charset = "GB2312";HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");StringWriter sw = new StringWriter();HtmlTextWriter htw = new HtmlTextWriter(sw);obj.RenderControl(htw);HttpContext.Current.Response.Write(style);HttpContext.Current.Response.Write(sw.ToString());HttpContext.Current.Response.End();}catch{}}} }/*實際應用的例子if (list.Count > 0){*????????????????? //1.實例化xftwl.Infrastructure.ExportExcel ex = new Infrastructure.ExportExcel();*????????????????? //2.指定數據源GridView gv = new GridView();gv.DataSource = list;gv.DataBind();//3.設置導出的excel某列格式if(gv.Rows.Count>0)????????????????????{for (int j = 0; j < gv.Rows.Count; j++){//把每行第二列格式設為文本格式gv.Rows[j].Cells[1].Attributes.Add("style", "mso-number-format:'\\@'");//每行第三列格式:兩位小數gv.Rows[j].Cells[2].Attributes.Add("style", "mso-number-format:'0\\.00'");}}??????????????????ex.ExportData(gv);}*/Json操作
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Reflection; using System.Collections; using System.Data.Common; using Newtonsoft.Json; using System.IO;namespace Common.Utility {//JSON轉換類public class ConvertJson{#region 私有方法/// <summary>/// 過濾特殊字符/// </summary>private static string String2Json(String s){StringBuilder sb = new StringBuilder();for (int i = 0; i < s.Length; i++){char c = s.ToCharArray()[i];switch (c){case '\"':sb.Append("\\\""); break;case '\\':sb.Append("\\\\"); break;case '/':sb.Append("\\/"); break;case '\b':sb.Append("\\b"); break;case '\f':sb.Append("\\f"); break;case '\n':sb.Append("\\n"); break;case '\r':sb.Append("\\r"); break;case '\t':sb.Append("\\t"); break;default:sb.Append(c); break;}}return sb.ToString();}/// <summary>/// 格式化字符型、日期型、布爾型/// </summary>private static string StringFormat(string str, Type type){if (type == typeof(string)){str = String2Json(str);str = "\"" + str + "\"";}else if (type == typeof(DateTime)){str = "\"" + str + "\"";}else if (type == typeof(bool)){str = str.ToLower();}else if (type != typeof(string) && string.IsNullOrEmpty(str)){str = "\"" + str + "\"";}return str;}#endregion#region List轉換成Json/// <summary>/// List轉換成Json/// </summary>public static string ListToJson<T>(IList<T> list){object obj = list[0];return ListToJson<T>(list, obj.GetType().Name);}/// <summary>/// List轉換成Json/// </summary>public static string ListToJson<T>(IList<T> list, string jsonName){StringBuilder Json = new StringBuilder();if (string.IsNullOrEmpty(jsonName)) jsonName = list[0].GetType().Name;Json.Append("{\"" + jsonName + "\":[");if (list.Count > 0){for (int i = 0; i < list.Count; i++){T obj = Activator.CreateInstance<T>();PropertyInfo[] pi = obj.GetType().GetProperties();Json.Append("{");for (int j = 0; j < pi.Length; j++){Type type = pi[j].GetValue(list[i], null).GetType();Json.Append("\"" + pi[j].Name.ToString() + "\":" + StringFormat(pi[j].GetValue(list[i], null).ToString(), type));if (j < pi.Length - 1){Json.Append(",");}}Json.Append("}");if (i < list.Count - 1){Json.Append(",");}}}Json.Append("]}");return Json.ToString();}#endregion#region 對象轉換為Json/// <summary>/// 對象轉換為Json/// </summary>/// <param name="jsonObject">對象</param>/// <returns>Json字符串</returns>public static string ToJson(object jsonObject){string jsonString = "{";PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties();for (int i = 0; i < propertyInfo.Length; i++){object objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject, null);string value = string.Empty;if (objectValue is DateTime || objectValue is Guid || objectValue is TimeSpan){value = "'" + objectValue.ToString() + "'";}else if (objectValue is string){value = "'" + ToJson(objectValue.ToString()) + "'";}else if (objectValue is IEnumerable){value = ToJson((IEnumerable)objectValue);}else{value = ToJson(objectValue.ToString());}jsonString += "\"" + ToJson(propertyInfo[i].Name) + "\":" + value + ",";}jsonString.Remove(jsonString.Length - 1, jsonString.Length);return jsonString + "}";}#endregion#region 對象集合轉換Json/// <summary>/// 對象集合轉換Json/// </summary>/// <param name="array">集合對象</param>/// <returns>Json字符串</returns>public static string ToJson(IEnumerable array){string jsonString = "[";foreach (object item in array){jsonString += ToJson(item) + ",";}jsonString.Remove(jsonString.Length - 1, jsonString.Length);return jsonString + "]";}#endregion#region 普通集合轉換Json/// <summary>/// 普通集合轉換Json/// </summary>/// <param name="array">集合對象</param>/// <returns>Json字符串</returns>public static string ToArrayString(IEnumerable array){string jsonString = "[";foreach (object item in array){jsonString = ToJson(item.ToString()) + ",";}jsonString.Remove(jsonString.Length - 1, jsonString.Length);return jsonString + "]";}#endregion#region? DataSet轉換為Json/// <summary>/// DataSet轉換為Json/// </summary>/// <param name="dataSet">DataSet對象</param>/// <returns>Json字符串</returns>public static string ToJson(DataSet dataSet){string jsonString = "{";foreach (DataTable table in dataSet.Tables){jsonString += "\"" + table.TableName + "\":" + ToJson(table) + ",";}jsonString = jsonString.TrimEnd(',');return jsonString + "}";}#endregion#region Datatable轉換為Json/// <summary>/// Datatable轉換為Json/// </summary>/// <param name="table">Datatable對象</param>/// <returns>Json字符串</returns>public static string ToJson(DataTable dt){StringBuilder jsonString = new StringBuilder();jsonString.Append("[");DataRowCollection drc = dt.Rows;for (int i = 0; i < drc.Count; i++){jsonString.Append("{");for (int j = 0; j < dt.Columns.Count; j++){string strKey = dt.Columns[j].ColumnName;string strValue = drc[i][j].ToString();Type type = dt.Columns[j].DataType;jsonString.Append("\"" + strKey + "\":");strValue = StringFormat(strValue, type);if (j < dt.Columns.Count - 1){jsonString.Append(strValue + ",");}else{jsonString.Append(strValue);}}jsonString.Append("},");}jsonString.Remove(jsonString.Length - 1, 1);jsonString.Append("]");return jsonString.ToString();}/// <summary>/// DataTable轉換為Json/// </summary>public static string ToJson(DataTable dt, string jsonName){StringBuilder Json = new StringBuilder();if (string.IsNullOrEmpty(jsonName)) jsonName = dt.TableName;Json.Append("{\"" + jsonName + "\":[");if (dt.Rows.Count > 0){for (int i = 0; i < dt.Rows.Count; i++){Json.Append("{");for (int j = 0; j < dt.Columns.Count; j++){Type type = dt.Rows[i][j].GetType();Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + StringFormat(dt.Rows[i][j].ToString(), type));if (j < dt.Columns.Count - 1){Json.Append(",");}}Json.Append("}");if (i < dt.Rows.Count - 1){Json.Append(",");}}}Json.Append("]}");return Json.ToString();}#endregion#region DataReader轉換為Json/// <summary>/// DataReader轉換為Json/// </summary>/// <param name="dataReader">DataReader對象</param>/// <returns>Json字符串</returns>public static string ToJson(DbDataReader dataReader){StringBuilder jsonString = new StringBuilder();jsonString.Append("[");while (dataReader.Read()){jsonString.Append("{");for (int i = 0; i < dataReader.FieldCount; i++){Type type = dataReader.GetFieldType(i);string strKey = dataReader.GetName(i);string strValue = dataReader[i].ToString();jsonString.Append("\"" + strKey + "\":");strValue = StringFormat(strValue, type);if (i < dataReader.FieldCount - 1){jsonString.Append(strValue + ",");}else{jsonString.Append(strValue);}}jsonString.Append("},");}dataReader.Close();jsonString.Remove(jsonString.Length - 1, 1);jsonString.Append("]");return jsonString.ToString();}#endregion#region Datatable轉換為Json 2/// <summary>/// Datatable轉換為Json 2/// </summary>/// <param name="dt"></param>/// <returns></returns>public static List<Dictionary<string, object>> DataTableToDictionary(DataTable dt){List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();foreach (DataRow dr in dt.Rows){Dictionary<string, object> result = new Dictionary<string, object>();foreach (DataColumn dc in dt.Columns){result.Add(dc.ColumnName, dr[dc].ToString());}list.Add(result);}return list;}#endregion#region SerializeObject/// <summary>/// SerializeObject/// </summary>/// <param name="o"></param>/// <returns></returns>public static string SerializeObject(object o){string json = JsonConvert.SerializeObject(o);return json;}#endregion#region 解析JSON字符串生成對象實體/// <summary>/// 解析JSON字符串生成對象實體/// </summary>/// <typeparam name="T">對象類型</typeparam>/// <param name="json">json字符串(eg.{"ID":"112","Name":"石子兒"})</param>/// <returns>對象實體</returns>public static T DeserializeJsonToObject<T>(string json) where T : class{JsonSerializer serializer = new JsonSerializer();StringReader sr = new StringReader(json);object o = serializer.Deserialize(new JsonTextReader(sr), typeof(T));T t = o as T;return t;}#endregion#region 解析JSON數組生成對象實體集合/// <summary>/// 解析JSON數組生成對象實體集合/// </summary>/// <typeparam name="T">對象類型</typeparam>/// <param name="json">json數組字符串(eg.[{"ID":"112","Name":"石子兒"}])</param>/// <returns>對象實體集合</returns>public static List<T> DeserializeJsonToList<T>(string json) where T : class{JsonSerializer serializer = new JsonSerializer();StringReader sr = new StringReader(json);object o = serializer.Deserialize(new JsonTextReader(sr), typeof(List<T>));List<T> list = o as List<T>;return list;}#endregion#region 反序列化JSON到給定的匿名對象/// <summary>/// 反序列化JSON到給定的匿名對象./// </summary>/// <typeparam name="T">匿名對象類型</typeparam>/// <param name="json">json字符串</param>/// <param name="anonymousTypeObject">匿名對象</param>/// <returns>匿名對象</returns>public static T DeserializeAnonymousType<T>(string json, T anonymousTypeObject){T t = JsonConvert.DeserializeAnonymousType(json, anonymousTypeObject);return t;}#endregion} }XML操作類
using System.Xml; using System.Data;namespace Common.Utility {/// <summary>/// Xml的操作公共類/// </summary>???public class XmlHelper{#region 字段定義/// <summary>/// XML文件的物理路徑/// </summary>private string _filePath = string.Empty;/// <summary>/// Xml文檔/// </summary>private XmlDocument _xml;/// <summary>/// XML的根節點/// </summary>private XmlElement _element;#endregion#region 構造方法/// <summary>/// 實例化XmlHelper對象/// </summary>/// <param name="xmlFilePath">Xml文件的相對路徑</param>public XmlHelper(string xmlFilePath){//獲取XML文件的絕對路徑_filePath = System.Web.HttpContext.Current.Server.MapPath(xmlFilePath);}#endregion#region 創建XML的根節點/// <summary>/// 創建XML的根節點/// </summary>private void CreateXMLElement(){//創建一個XML對象_xml = new XmlDocument();if (DirFile.IsExistFile(_filePath)){//加載XML文件_xml.Load(this._filePath);}//為XML的根節點賦值_element = _xml.DocumentElement;}#endregion#region 獲取指定XPath表達式的節點對象/// <summary>/// 獲取指定XPath表達式的節點對象/// </summary>???????/// <param name="xPath">XPath表達式,/// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"/// 范例2: @"Table[USERNAME='a']" , []表示篩選,USERNAME是Table下的一個子節點./// 范例3: @"ApplyPost/Item[@itemName='崗位編號']",@itemName是Item節點的屬性./// </param>public XmlNode GetNode(string xPath){//創建XML的根節點CreateXMLElement();//返回XPath節點return _element.SelectSingleNode(xPath);}#endregion#region 獲取指定XPath表達式節點的值/// <summary>/// 獲取指定XPath表達式節點的值/// </summary>/// <param name="xPath">XPath表達式,/// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"/// 范例2: @"Table[USERNAME='a']" , []表示篩選,USERNAME是Table下的一個子節點./// 范例3: @"ApplyPost/Item[@itemName='崗位編號']",@itemName是Item節點的屬性./// </param>public string GetValue(string xPath){//創建XML的根節點CreateXMLElement();//返回XPath節點的值return _element.SelectSingleNode(xPath).InnerText;}#endregion#region 獲取指定XPath表達式節點的屬性值/// <summary>/// 獲取指定XPath表達式節點的屬性值/// </summary>/// <param name="xPath">XPath表達式,/// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"/// 范例2: @"Table[USERNAME='a']" , []表示篩選,USERNAME是Table下的一個子節點./// 范例3: @"ApplyPost/Item[@itemName='崗位編號']",@itemName是Item節點的屬性./// </param>/// <param name="attributeName">屬性名</param>public string GetAttributeValue(string xPath, string attributeName){//創建XML的根節點CreateXMLElement();//返回XPath節點的屬性值return _element.SelectSingleNode(xPath).Attributes[attributeName].Value;}#endregion#region 新增節點/// <summary>/// 1. 功能:新增節點。/// 2. 使用條件:將任意節點插入到當前Xml文件中。/// </summary>???????/// <param name="xmlNode">要插入的Xml節點</param>public void AppendNode(XmlNode xmlNode){//創建XML的根節點CreateXMLElement();//導入節點XmlNode node = _xml.ImportNode(xmlNode, true);//將節點插入到根節點下_element.AppendChild(node);}/// <summary>/// 1. 功能:新增節點。/// 2. 使用條件:將DataSet中的第一條記錄插入Xml文件中。/// </summary>???????/// <param name="ds">DataSet的實例,該DataSet中應該只有一條記錄</param>public void AppendNode(DataSet ds){//創建XmlDataDocument對象XmlDataDocument xmlDataDocument = new XmlDataDocument(ds);//導入節點XmlNode node = xmlDataDocument.DocumentElement.FirstChild;//將節點插入到根節點下AppendNode(node);}#endregion#region 刪除節點/// <summary>/// 刪除指定XPath表達式的節點/// </summary>???????/// <param name="xPath">XPath表達式,/// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"/// 范例2: @"Table[USERNAME='a']" , []表示篩選,USERNAME是Table下的一個子節點./// 范例3: @"ApplyPost/Item[@itemName='崗位編號']",@itemName是Item節點的屬性./// </param>public void RemoveNode(string xPath){//創建XML的根節點CreateXMLElement();//獲取要刪除的節點XmlNode node = _xml.SelectSingleNode(xPath);//刪除節點_element.RemoveChild(node);}#endregion //刪除節點#region 保存XML文件/// <summary>/// 保存XML文件/// </summary>???????public void Save(){//創建XML的根節點CreateXMLElement();//保存XML文件_xml.Save(this._filePath);}#endregion //保存XML文件#region 靜態方法#region 創建根節點對象/// <summary>/// 創建根節點對象/// </summary>/// <param name="xmlFilePath">Xml文件的相對路徑</param>???????private static XmlElement CreateRootElement(string xmlFilePath){//定義變量,表示XML文件的絕對路徑string filePath = "";//獲取XML文件的絕對路徑filePath = System.Web.HttpContext.Current.Server.MapPath(xmlFilePath);//創建XmlDocument對象XmlDocument xmlDocument = new XmlDocument();//加載XML文件xmlDocument.Load(filePath);//返回根節點return xmlDocument.DocumentElement;}#endregion#region 獲取指定XPath表達式節點的值/// <summary>/// 獲取指定XPath表達式節點的值/// </summary>/// <param name="xmlFilePath">Xml文件的相對路徑</param>/// <param name="xPath">XPath表達式,/// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"/// 范例2: @"Table[USERNAME='a']" , []表示篩選,USERNAME是Table下的一個子節點./// 范例3: @"ApplyPost/Item[@itemName='崗位編號']",@itemName是Item節點的屬性./// </param>public static string GetValue(string xmlFilePath, string xPath){//創建根對象XmlElement rootElement = CreateRootElement(xmlFilePath);//返回XPath節點的值return rootElement.SelectSingleNode(xPath).InnerText;}#endregion#region 獲取指定XPath表達式節點的屬性值/// <summary>/// 獲取指定XPath表達式節點的屬性值/// </summary>/// <param name="xmlFilePath">Xml文件的相對路徑</param>/// <param name="xPath">XPath表達式,/// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"/// 范例2: @"Table[USERNAME='a']" , []表示篩選,USERNAME是Table下的一個子節點./// 范例3: @"ApplyPost/Item[@itemName='崗位編號']",@itemName是Item節點的屬性./// </param>/// <param name="attributeName">屬性名</param>public static string GetAttributeValue(string xmlFilePath, string xPath, string attributeName){//創建根對象XmlElement rootElement = CreateRootElement(xmlFilePath);//返回XPath節點的屬性值return rootElement.SelectSingleNode(xPath).Attributes[attributeName].Value;}#endregion#endregion} }
獲取
在我的公眾號“霸道的程序猿”
發送“200工具類”
總結
以上是生活随笔為你收集整理的C#200个基础工具类,史上最全快收藏下载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Navicat连接Oracle数据库以及
- 下一篇: VMware10.0中安装CentOS8