usingSystem;usingSystem.Collections.Generic;usingSystem.Data;usingSystem.IO;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceCSVtoDataBase{publicclassCSVHelper{/// <summary>/// 写入CSV/// </summary>/// <param name="fileName">文件名</param>/// <param name="dt">要写入的datatable</param>publicvoidWriteCSV(string fileName,DataTable dt){FileStream fs;StreamWriter sw;string data =null;//判断文件是否存在,存在就不再次写入列名if(!File.Exists(fileName)){
fs =newFileStream(fileName, FileMode.Create, FileAccess.Write);
sw =newStreamWriter(fs, Encoding.UTF8);//写出列名称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);}else{
fs =newFileStream(fileName, FileMode.Append, FileAccess.Write);
sw =newStreamWriter(fs, Encoding.UTF8);}//写出各行数据for(int i =0; i < dt.Rows.Count; i++){
data =null;for(int j =0; j < dt.Columns.Count; j++){
data += dt.Rows[i][j].ToString();if(j < dt.Columns.Count -1){
data +=",";//中间用,隔开}}
sw.WriteLine(data);}
sw.Close();
fs.Close();}/// <summary>/// 读取CSV文件/// </summary>/// <param name="fileName">文件路径</param>publicDataTableReadCSV(string fileName){DataTable dt =newDataTable();FileStream fs =newFileStream(fileName, FileMode.Open, FileAccess.Read);StreamReader sr =newStreamReader(fs, Encoding.UTF8);//记录每次读取的一行记录string strLine =null;//记录每行记录中的各字段内容string[] arrayLine =null;//分隔符string[] separators ={","};//判断,若是第一次,建立表头bool isFirst =true;//列的个数int dtColumns =0;//逐行读取CSV文件while((strLine = sr.ReadLine())!=null){
strLine = strLine.Trim();//去除头尾空格
arrayLine = strLine.Split(separators, StringSplitOptions.RemoveEmptyEntries);//分隔字符串,返回数组if(isFirst)//建立表头{
dtColumns = arrayLine.Length;//列的个数for(int i =0; i < dtColumns; i++){
dt.Columns.Add(arrayLine[i]);//每一列名称}
isFirst =false;}else//表内容{DataRow dataRow = dt.NewRow();//新建一行for(int j =0; j < dtColumns; j++){
dataRow[j]= arrayLine[j];}
dt.Rows.Add(dataRow);//添加一行}}
sr.Close();
fs.Close();return dt;}}}
usingSystem;usingSystem.Collections.Generic;usingSystem.Data;usingSystem.Linq;usingSystem.Reflection;usingSystem.Text;usingSystem.Threading.Tasks;namespaceCSVtoDataBase{publicclassModelHelper<T>whereT:new()// 此处一定要加上new(){publicIList<T>DataTableToModel(DataTable dt){IList<T> list =newList<T>();// 定义集合Type type =typeof(T);// 获得此模型的类型string tempName ="";foreach(DataRow dr in dt.Rows){T t =newT();PropertyInfo[] propertys = t.GetType().GetProperties();// 获得此模型的公共属性foreach(PropertyInfo pro in propertys){
tempName = pro.Name;if(dt.Columns.Contains(tempName)){if(!pro.CanWrite)continue;objectvalue= dr[tempName];if(value!= DBNull.Value)
pro.SetValue(t,value,null);}}
list.Add(t);}return list;}}}
using SqlSugar;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace CSVtoDataBase{ public class SqlSugarHelper { public static string ConnectionString = string.Empt