C#如何正确将读取CSV生成的数组加载到DataGridView对应单元格
问题根因
你当前的代码仅将CSV内容按换行拆分为了行数组,没有对每一行的内容按CSV的分隔符(你当前使用的是分号;)做二次拆分,所以才会把整行内容全部填入同一个单元格。同时原代码还存在两个隐性问题:
- 行数组
result定义在using代码块内部,外部循环无法访问,编译会报错 - 第二列的显示名拼写有误,少了末尾的字母d
修正后可直接运行的代码
public void Load() { string[] result; // 读取CSV文件并按换行拆分为行数组 using (StreamReader sr = new StreamReader("Accounts.csv")) { string strResult = sr.ReadToEnd(); result = strResult.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); } // 手动添加列,修正了原拼写错误的列名 dataGridView1.Columns.Add("Account#", "Account#"); dataGridView1.Columns.Add("Password", "Password"); dataGridView1.Columns.Add("Server", "Server"); // 从下标1开始遍历,跳过CSV第一行的表头内容 for (int i = 1; i < result.Length; i++) { // 对单行内容按分号二次拆分,得到每个单元格的独立值 string[] cellValues = result[i].Split(';'); // Trim处理第三列末尾的多余空格 dataGridView1.Rows.Add(cellValues[0], cellValues[1], cellValues[2].Trim()); } }
补充说明
如果后续你的CSV格式变复杂,出现了用引号包裹、内部包含分号的字段,上面的简单拆分逻辑会出错,生产环境建议使用专门的CSV解析库处理。
内容的提问来源于stack exchange,提问作者M_Arad
相关产品推荐
相关产品推荐

