CSV(逗号分隔值文件)是分隔文本文件,它使用逗号分隔值。CSV文件以纯文本格式存储表格数据。该文件的每一行都是一个数据记录。每条记录由一个或多个字段组成,以逗号分隔。因此CSV文件可以存储表示数据表的数据,也可以理解为数据存储的文件。
C# Win Form程序开发
本例CSV文件格式与后台数据表格式一致,CSV文件内容描述如下:
CSV文件(数据只供演示实用无实际意义)
通过实用Win Form可以读取外部CSV文件到内存中,并逐行读取内存中的数据,将其写入对应DataTable实例对象中,最后通过批量复制数据类 SqlBulkCopy实例化对象将其写入数据库。其实现关键方法与步骤描述如下:
(1)读取文件到内存并实例化StreamReader类
FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read); sr = new StreamReader(fs);
其中filepath为CSV文件的存储路径,以读取的形式打开该文件,执行后数据被读取到sr中。
(2)创建DataTable对象实例用于接收内存中存储的CSV数据
DataTable dt = new DataTable(); dt.Columns.Add("id", System.Type.GetType("System.String")); dt.Columns.Add("IdNumber", System.Type.GetType("System.String")); dt.Columns.Add("Name", System.Type.GetType("System.String")); dt.Columns.Add("Gender", System.Type.GetType("System.String")); dt.Columns.Add("Occupation", System.Type.GetType("System.String")); dt.Columns.Add("Province", System.Type.GetType("System.String")); dt.Columns.Add("skills", System.Type.GetType("System.String")); 以上代码完成dt的实例化并且确定了数据表所包含的类
(3)逐行读取内存sr中的CSV数据并写入dt中
while ((str = sr.ReadLine()) != null) { string[] csvdata = str.Split(',');//行读取到数组中,按照逗号进行划分 DataRow dataRow = dt.NewRow();//创建新行 dataRow[0] = csvdata[0]; dataRow[1] = csvdata[1]; dataRow[2] = csvdata[2]; dataRow[3] = csvdata[3]; dataRow[4] = csvdata[4]; dataRow[5] = csvdata[5]; dataRow[6] = csvdata[6]; dt.Rows.Add(dataRow);//将新行添加到dt中 }
(4)完成数据读取之后使用SqlBulkCopy批量将内存中的dt数据复制到数据库对应表中
SqlBulkCopy sqlBulk = new SqlBulkCopy(conn) { DestinationTableName = "temp", NotifyAfter = dt.Rows.Count }; sqlBulk.WriteToServer(dt); sqlBulk.Close();
以上给出C# Win Form读取CSV并写入数据库的基本操作与方法,希望对初学者有一定帮助,如需获取完整实现代码请私信作者。如需阅读往期文章请点击链接:
- Win Form登录框本地记住密码功能实现
- C# Win Form 编程实现图片的数据库存储
- C# Win Form 实现XML文件读写
- C# Win Form 动态添加CheckBox控件
本头条号长期关注于青少年编程资讯分享;编程课程、素材、代码分享及青少年编程培训。如果您对以上方面有兴趣,可关注该头条号,如有编程学习问题可以联系作者,共同探讨。
,