?
?
?
////// TXT轉DataTable
/// ////// public DataTable TXT2DataTable(string path)
{
try
{
StreamReader sR = File.OpenText(path);
DataTable dt = new DataTable();
string firstLine = sR.ReadLine();
string[] colName = firstLine.Split(',');
foreach (var i in colName)
{
if (i.Contains("#"))
{
Regex reg = new Regex(@"[#]");
string a = reg.Replace(i, "");
DataColumn col = dt.Columns.Add(a.ToString().Trim());
}
else if(i.Contains("name"))
{
string a = "Text";
DataColumn col = dt.Columns.Add(a.ToString().Trim());
}
else
{
DataColumn col = dt.Columns.Add(i.ToString().Trim());
}
}
string nextLine;
bool sign = false;
while ((nextLine = sR.ReadLine()) != null)
{
//如果以""開頭,舍棄,以"#"開頭,以;劃分
if (nextLine.Equals(""))//txt2中間
{
continue;
}
if (nextLine.Equals(" "))//txt2末尾
{
break;
}
if (nextLine.StartsWith("#"))
{
sign = true;
continue;
}
char s= sign ? ';' : ',';
string[] every_row = nextLine.Split(s);
DataRow dr = dt.NewRow();
for (int i = 0; i< dt.Columns.Count; i++)
{
dr[i] = every_row[i];
}
dt.Rows.Add(dr);
}
sR.Close();
return dt;
}
catch (Exception ex)
{
MessageBox.Show("解析錯誤!", "提示:", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return null;
}
}
////// datatable轉實體類
/// /// public class ConvertHelperwhere T : new()
{
public static IListConvertToModel(DataTable dt)
{
IListts = new List();//定義集合
Type type = typeof(T);//獲得此模型的類型
string tempName = "";
//遍歷DataTable的所有的行
foreach (DataRow dr in dt.Rows)
{
T t = new T();//獲得此模型的公共屬性
PropertyInfo[] propertys = t.GetType().GetProperties();//定義屬性集合
foreach (PropertyInfo pi in propertys)//遍歷pi的所有的屬性
{
tempName = pi.Name;//將屬性名稱賦值給臨時變量
if (dt.Columns.Contains(tempName))//檢查DataTable是否包含此列
{
//判斷此屬性是否有Setter
if (!pi.CanWrite)//判斷屬性是否可寫,如果不可寫,跳出本次循環(huán)
continue;
object value = dr[tempName];//取值
value = Convert.ChangeType(value, pi.PropertyType);//轉化數據類型
//pi.GetMethods();
if (value != DBNull.Value)//如果非空
pi.SetValue(t, value, null);//將值賦到t中
}
}
ts.Add(t);//對象添加到泛型集合中
}
return ts;
}
}
////// 類轉結構體
/// //////private void button4_Click(object sender, EventArgs e)
{
MObject _MObject = new MObject(); //可對屬性賦值{ A1 = 1, A2 = 2, A3 = 4, C1 = 2.5, C2 = 3.5 };
MStruct _MStruct = new MStruct();
//反射
#region
Type type_MObject = _MObject.GetType();
PropertyInfo[] propertyInfo_MObject = type_MObject.GetProperties();//獲取到_MObject的所有屬性
foreach (var item in propertyInfo_MObject)//遍歷MObject屬性
{
//得到MObject中該屬性的值,然后去MStruct中設置該屬性的值
object MObject_item_value = item.GetValue(_MObject, null);
if (MObject_item_value != null)
{
var Obj_MStruct = (object)_MStruct;
//得到結構體MStruct中對應字段
var fieldsObjinfos = Obj_MStruct.GetType().GetField(item.Name);
//判斷兩個要賦值的屬性類型是否相同
if (fieldsObjinfos.FieldType == item.PropertyType)
{
fieldsObjinfos.SetValue(Obj_MStruct, MObject_item_value);
}
else
{
//不同的話就做處理
//這里處理根據實際情況
fieldsObjinfos.SetValue(Obj_MStruct, (MObject_item_value).ToString());
// fieldsObjinfos.
}
//得到結果
_MStruct = (MStruct)Obj_MStruct;
}
}
#endregion
}
////// 泛型集合轉DataTable
/// ///集合類型 ///泛型集合///DataTable public static DataTable ListToDataTable(IListentityList)
{
if (entityList == null) return null;
DataTable dt = CreateTable();
Type entityType = typeof(T);
//PropertyInfo[] properties = entityType.GetProperties();
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType);
foreach (T item in entityList)
{
DataRow row = dt.NewRow();
foreach (PropertyDescriptor property in properties)
{
row[property.Name] = property.GetValue(item);
}
dt.Rows.Add(row);
}
return dt;
}
////// 生成datatable,以屬性名為列名
/// /// /// private static DataTable CreateTable()
{
Type entityType = typeof(T);
//PropertyInfo[] properties = entityType.GetProperties();
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType);
//生成DataTable的結構
DataTable dt = new DataTable();
foreach (PropertyDescriptor prop in properties)
{
dt.Columns.Add(prop.Name);
}
return dt;
}
////// 將DataTable導出到Txt文件
/// ///eTxt
public static void ExportExcelFile(DataTable dt)
{
//獲取配置文件中導出txt文件路徑(注:根據自己的實際情況獲取路徑)
string strFilePath = "";
if (!Directory.Exists(strFilePath))
Directory.CreateDirectory(strFilePath);
//整合文件名稱 文件夾路徑+時間文件名稱
string fileFullName = String.Format("{0}{1}.txt", strFilePath, DateTime.Now.Ticks);
//讀取文件信息
var fi = new FileInfo(fileFullName);
//判斷文件目錄是否存在
if (!fi.Directory.Exists)
{
fi.Directory.Create();
}
//FileMode.Append(打開文件,流指向文件的末尾,只能與枚舉FileAccess.Write聯合使用) FileAccess.Write(打開文件,用于只寫)
var fs = new FileStream(fileFullName, FileMode.Append, FileAccess.Write); //StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);
//將字符串寫入文件
var sw = new StreamWriter(fs, Encoding.UTF8);
var data = "";
int s = 0;
//寫出列名稱
if (s == 0)
{
++s;
for (var i = 0; i< dt.Columns.Count; i++)//先把列名搞出來
{
data += dt.Columns[i].ColumnName;
if (i< dt.Columns.Count - 1)//之間添加逗號
{
data += ",";
}
}
//寫入文件并換行
sw.WriteLine(data);//后面跟了行結束符
}
//寫出各行數據
for (var i = 0; i< dt.Rows.Count; i++)
{
data = "";
for (var j = 0; j< dt.Columns.Count; j++)
{
var str = dt.Rows[i][j].ToString();
//str = str.Replace("\"", "\"\""); //替換英文冒號 英文冒號需要換成兩個冒號
//if (str.Contains(',') || str.Contains('"') || str.Contains('\r') || str.Contains('\n')) //含逗號 冒號 換行符的需要放到引號中
//{
// str = string.Format("\"{0}\"", str);
//}
data += str;
if (j< dt.Columns.Count - 1)
{
data += ",";
}
}
sw.WriteLine(data);
}
sw.Close();
fs.Close();
}
////// Datatable生成Excel表格并返回路徑
/// ///Datatable///文件名/// public string DataToExcel(DataTable m_DataTable, string s_FileName)
{
string FileName = AppDomain.CurrentDomain.BaseDirectory + ("/Upload/Excel/") + s_FileName + ".xls"; //文件存放路徑
if (File.Exists(FileName))
{
File.Delete(FileName); //存在則刪除
}
//FileStream objFileStream;
//StreamWriter objStreamWriter;//寫入流對象
string strLine = "";
FileStream objFileStream = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter objStreamWriter = new StreamWriter(objFileStream, Encoding.Unicode);
for (int i = 0; i< m_DataTable.Columns.Count; i++)
{
strLine = strLine + m_DataTable.Columns[i].Caption.ToString() + Convert.ToChar(9); //寫列標題
}
objStreamWriter.WriteLine(strLine);
strLine = "";
for (int i = 0; i< m_DataTable.Rows.Count; i++)
{
for (int j = 0; j< m_DataTable.Columns.Count; j++)
{
if (m_DataTable.Rows[i].ItemArray[j] == null)//沒有數據
strLine = strLine + " " + Convert.ToChar(9); //寫內容
else
{
string rowstr = "";
rowstr = m_DataTable.Rows[i].ItemArray[j].ToString();
if (rowstr.IndexOf("\r\n") >0)//換行符的位置
rowstr = rowstr.Replace("\r\n", " ");
if (rowstr.IndexOf("\t") >0)//tab鍵的位置
rowstr = rowstr.Replace("\t", " ");
strLine = strLine + rowstr + Convert.ToChar(9);
}
}
objStreamWriter.WriteLine(strLine);
strLine = "";
}
objStreamWriter.Close();
objFileStream.Close();
return FileName; //返回生成文件的絕對路徑
}
?
?
?
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
創(chuàng)新互聯是一家集網站建設,安溪企業(yè)網站建設,安溪品牌網站建設,網站定制,安溪網站建設報價,網絡營銷,網絡優(yōu)化,安溪網站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網站。