C#如何将制表符分隔的字符串数组正确绑定到DataGridView
问题原因
你当前的代码没有对每行的制表符分隔内容做拆分,直接把整行字符串作为单个值传入dt.Rows.Add(),因此整行内容会被全部填充到第一列,其余列留空。
修复代码
遍历每行时,先用Split('\t')按制表符把单行内容拆分为对应列数的字符串数组,再传入行添加方法即可,修正后的完整代码如下:
// 读取文件所有行 string[] lines = File.ReadAllLines(filePath); DataTable dt = new DataTable(); dt.Columns.Add("Name",typeof(string)); dt.Columns.Add("Food",typeof(string)); dt.Columns.Add("Color",typeof(string)); dt.Columns.Add("Fruit",typeof(string)); foreach(string s in lines) { // 跳过空行避免报错 if(string.IsNullOrWhiteSpace(s)) continue; // 按制表符拆分当前行的各个字段 string[] rowFields = s.Split('\t'); // 校验字段数量匹配列数,避免格式错误导致运行异常 if(rowFields.Length == 4) { dt.Rows.Add(rowFields); } } myDataGridView.DataSource = dt;
可选优化
- 如果拆分后的字段前后存在多余空白字符,可以把拆分逻辑改成
s.Split('\t').Select(f => f.Trim()).ToArray(),自动去除字段首尾空格。 - 如果文件存在表头行,可以跳过第一行的读取,不用把表头内容当成数据行加载。
内容的提问来源于stack exchange,提问作者magicsword
相关产品推荐
相关产品推荐

