C# 将csv文件加载到datagridview并忽略带分隔符的单词
我在一个C#项目中使用Csv文件和datagridview 我尝试加载带有2个分隔符“,”+“”的CSV文件“这是我的问题!我需要忽略逗号后的所有单词,但最后一个单词example.csv除外: 我希望在我的datagridview中显示如下: 如您所见,我的目标是添加CSV中的所有行,但如果出现逗号,则获取最后一个单词。到目前为止,我使用以下代码:C# 将csv文件加载到datagridview并忽略带分隔符的单词,c#,datagridview,C#,Datagridview,我在一个C#项目中使用Csv文件和datagridview 我尝试加载带有2个分隔符“,”+“”的CSV文件“这是我的问题!我需要忽略逗号后的所有单词,但最后一个单词example.csv除外: 我希望在我的datagridview中显示如下: 如您所见,我的目标是添加CSV中的所有行,但如果出现逗号,则获取最后一个单词。到目前为止,我使用以下代码: System.IO.StreamReader fileReader = new System.IO.StreamReader(csvPath, f
System.IO.StreamReader fileReader = new System.IO.StreamReader(csvPath, false);
string fileRow;
string[] fileDataField;
//Reading Data
while (fileReader.Peek() != -1)
{
fileRow = fileReader.ReadLine();
fileDataField = fileRow.Split(';');
dataGridView1.Rows.Add(fileDataField);
}
fileReader.Dispose();
fileReader.Close();
System.IO.StreamReader fileReader=new System.IO.StreamReader(csvPath,false);
字符串[]fileDataField;
字符串文件行;
//读取数据
while(fileReader.Peek()!=-1){
fileRow=fileReader.ReadLine();
fileDataField=fileRow.Split(“;”);
//声明临时数组以临时存储值
string[]tempItems=新字符串[fileDataField.Length];
//循环遍历数组并执行逗号检查,
//如果字符串中有逗号,请将其剪切
//否则,只需添加正常值
for(int i=0;i
这应该行得通。您可以简单地切断字符串前面的部分,包括逗号,然后将其余部分添加到gridview。如果未找到逗号,则添加该值而不进行更改
编辑:
应使用数组而不是列表。System.IO.StreamReader fileReader=new System.IO.StreamReader(csvPath,false);
字符串[]fileDataField;
字符串文件行;
//读取数据
while(fileReader.Peek()!=-1){
fileRow=fileReader.ReadLine();
fileDataField=fileRow.Split(“;”);
//声明临时数组以临时存储值
string[]tempItems=新字符串[fileDataField.Length];
//循环遍历数组并执行逗号检查,
//如果字符串中有逗号,请将其剪切
//否则,只需添加正常值
for(int i=0;i
这应该行得通。您可以简单地切断字符串前面的部分,包括逗号,然后将其余部分添加到gridview。如果未找到逗号,则添加该值而不进行更改
编辑:
应该使用数组而不是列表。您可以使用Linq来解决此问题。只需添加对
System.Linq
的引用,并设置fileDataField
,如下所示:
fileDataField = fileRow.Split(';')
.Select(e=> e.LastIndexOf(",") >= 0 && e.IndexOf(",") < e.Length
? e.Substring(e.LastIndexOf(",") + 1)
: e).ToArray();
fileDataField=fileRow.Split(“;”)
.选择(e=>e.LastIndexOf(“,”)>=0&&e.IndexOf(“,”)
您可以使用Linq来解决此问题。只需添加对System.Linq
的引用,并设置fileDataField
,如下所示:
fileDataField = fileRow.Split(';')
.Select(e=> e.LastIndexOf(",") >= 0 && e.IndexOf(",") < e.Length
? e.Substring(e.LastIndexOf(",") + 1)
: e).ToArray();
fileDataField=fileRow.Split(“;”)
.选择(e=>e.LastIndexOf(“,”)>=0&&e.IndexOf(“,”)
谢谢你的回答,但我不明白我在测试这段代码时是什么意思,它将:System.Collections.Generic.List`1[System.String]添加到我的datagridview中,你知道为什么吗?我已经更新了答案。问题是向GridView添加一个列表,现在它使用的是一个数组谢谢你的回答,但是我不明白我在测试这段代码的时候,它向我的datagridview添加了:System.Collections.Generic.List`1[System.String],你知道为什么吗?我已经更新了答案。问题是将列表添加到GridView,现在使用一个数组它工作得很好,但是我正在使用一个数组来修复这个问题,我添加了add.ToArray()谢谢你的帮助!事实上我意识到了这一点,并更新了我的答案:)工作得很好,但我正在使用一个数组来修复我添加的这个问题。ToArray()谢谢你的帮助!事实上我意识到了这一点,并更新了我的答案:)
System.IO.StreamReader fileReader = new System.IO.StreamReader(csvPath, false);
string[] fileDataField;
string fileRow;
//Reading Data
while (fileReader.Peek() != -1) {
fileRow = fileReader.ReadLine();
fileDataField = fileRow.Split(';');
//Declare temporary array to temporary store the values
string[] tempItems = new string[fileDataField.Length];
//Loop through the array and do comma check,
//Cut the string if there's a comma in it
//Else just add the normal value
for (int i = 0; i < fileDataField.Length; i++) {
tempItems[i] = fileDataField[i].Substring(fileDataField[i].LastIndexOf(",") + 1);
}
dataGridView1.Rows.Add(tempItems);
}
fileReader.Dispose();
fileReader.Close();
fileDataField = fileRow.Split(';')
.Select(e=> e.LastIndexOf(",") >= 0 && e.IndexOf(",") < e.Length
? e.Substring(e.LastIndexOf(",") + 1)
: e).ToArray();