导入Csv文件
创建固定编码方式Encoding
创建DataTable表格盛放筛选后匹配后的数据
创建FileStream文件类进行设置属性
创建流读取对象StreamReader
代码比较多只上传核心代码,不懂的留言讲解 讲解不懂的请下载文件
while ((strLine = sr.ReadLine()) != null) //循环获取文件中的列名数据放入DataTable中
{
if (YesOrNo == true)
{
tableHead = strLine.Split(','); //获取所有csv文件中所有列名放入临时数组tableHead
for (int i = 0; i < tableHead.Length; i++) //此循环只用来删除列中的 “ r_ ”然后放回原数组
{
wocao = tableHead[i].ToString(); //用来处理提取数组中的数值转换赋值给我wocao字符串
wocao = wocao.Replace("r_", ""); //把每一个列名去掉r_重新赋值给wocao
tableHead[i] = wocao; //把去掉的数据重新放入数组
}
dt.Columns.Add("MODEL"); //手动创建第二列的列名
dt.Columns.Add("LOWORUP"); //手动创建第三列的列名
for (int i = 0; i < txt.Length; i++) //直接写死! 循环放入真正有效的列明
{
DataColumn dc = new DataColumn(txt[i]); //创建table中的列名类
dt.Columns.Add(dc);
}
YesOrNo = false; //关闭重铸列名 开始下面的重铸数据
int txtLength = txt.Length; //记录有效列明的长度
Array.Clear(txt, 0, txt.Length); //清空txt字符串数组
}else
{
txt = strLine.Split(','); //csv文件中的所有数据行
for(int i = 0; i < dt.Columns.Count; i++) //控制控件上的某下标的元素数
{
for (int j = 0; j <tableHead.Length; j++) //控制内循环主要跑680多列的数据进行判断
{
if (dt.Columns[i].ToString() == tableHead[j].ToString()) //如果table中的列名数据和csv中所有的列名数据进行匹配,如果相重
{
if(dt.Rows.Count > sum) //如果大于0说明table中有数据 如果有
{
dt.Rows[sum][i] = txt[i]; //指定sum行i列
}
else //否则无数据
{
dt.Rows.Add(txt[i]);
}
break;
}
}
}
sum++;
}
}
当前部分为已经获取到csv文件数据插入数据库!
导出Csv文件
创建文件类SaveFileDialog
创建流类Stream
创建写入流类StreamWriter
代码比较多只上传核心代码,不懂的留言讲解 讲解不懂的请下载文件
以上代码绝无任何报错bug运行不了情况
有任何不懂的请留言,超过2小时没回复请私聊QQ:2773938492