Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 导入带有“0”的文件&引用;作为定界符_C#_Datagridview - Fatal编程技术网

C# 导入带有“0”的文件&引用;作为定界符

C# 导入带有“0”的文件&引用;作为定界符,c#,datagridview,C#,Datagridview,我试图读取的文件如下所示: // Simple: quotation "..." e.g. "123,456",789 is not implemented private static DataTable FromCsvSimple(string path, char delimiter = ',') { // Try avoiding ReadAllLines; use ReadLines // Where - let's skip empty lines (if any) v

我试图读取的文件如下所示:

// Simple: quotation "..." e.g. "123,456",789 is not implemented 
private static DataTable FromCsvSimple(string path, char delimiter = ',') {
  // Try avoiding ReadAllLines; use ReadLines
  // Where - let's skip empty lines (if any)
  var lines = File
    .ReadLines(path)
    .Where(line => !string.IsNullOrWhiteSpace(line))
    .Select(line => line.Split(delimiter));

  DataTable result = new DataTable();

  foreach (string[] items in lines) {
    // Do we have any columns to add?
    for (int c = 0; c < items.Length; ++c) 
      while (c >= result.Columns.Count)
        result.Columns.Add();

    result.Rows.Add(items);
  }

  return result;
}

...

DataTable myTable = FromCsvSimple(@"c:\MyCsv.csv", ';');
123h123m,123123

我有以下代码来尝试阅读:

public DataTable DataTableFromTextFile(string location, char delimiter = ',')
{
    DataTable result;

    string[] LineArray = File.ReadAllLines(path);

    result = FormDataTable(LineArray, delimiter);

    return result;
}

private static DataTable FormDataTable(string[] LineArray, char delimiter)
{
    DataTable dt = new DataTable();

    AddColumnToTable(LineArray, delimiter, ref dt);

    AddRowToTable(LineArray, delimiter, ref dt);

    return dt;
}

private static void AddRowToTable(string[] valueCollection, char delimiter, ref DataTable dt)
{

    for (int i = 1; i < valueCollection.Length; i++)
    {
        string[] values = valueCollection[i].Split(delimiter);
        DataRow dr = dt.NewRow();
        for (int j = 0; j < values.Length; j++)
        {
            dr[j] = values[j];
        }
        dt.Rows.Add(dr);
    }
}

private static void AddColumnToTable(string[] columnCollection, char delimiter, ref DataTable dt)
{
    string[] columns = columnCollection[0].Split(delimiter);
    foreach (string columnName in columns)
    {
        DataColumn dc = new DataColumn(columnName, typeof(string));
    }
}
public DataTable DataTableFromTextFile(字符串位置,字符分隔符=',')
{
数据表结果;
字符串[]LineArray=File.ReadAllLines(路径);
结果=FormDataTable(线性阵列,分隔符);
返回结果;
}
私有静态数据表FormDataTable(字符串[]线性数组,字符分隔符)
{
DataTable dt=新的DataTable();
AddColumntTable(线性阵列、分隔符、参考数据);
AddRowToTable(线性阵列、分隔符、ref dt);
返回dt;
}
私有静态void addrowtable(字符串[]valueCollection,字符分隔符,ref DataTable dt)
{
for(int i=1;i
但它似乎还不起作用。我尝试过改变一些东西,但后来又在DataGridView(称为infoTabelle)中添加了空格。 有人能帮我解决问题吗

****编辑
现在都修好了。我改变了将分离文本放入DataGridView的方法。现在像个魔术师一样工作。**

您正在寻找这样的东西:

// Simple: quotation "..." e.g. "123,456",789 is not implemented 
private static DataTable FromCsvSimple(string path, char delimiter = ',') {
  // Try avoiding ReadAllLines; use ReadLines
  // Where - let's skip empty lines (if any)
  var lines = File
    .ReadLines(path)
    .Where(line => !string.IsNullOrWhiteSpace(line))
    .Select(line => line.Split(delimiter));

  DataTable result = new DataTable();

  foreach (string[] items in lines) {
    // Do we have any columns to add?
    for (int c = 0; c < items.Length; ++c) 
      while (c >= result.Columns.Count)
        result.Columns.Add();

    result.Rows.Add(items);
  }

  return result;
}

...

DataTable myTable = FromCsvSimple(@"c:\MyCsv.csv", ';');
//简单:引用“…”例如“123456”,789未实现
私有静态数据表FromCsvSimple(字符串路径,字符分隔符=','){
//尽量避免使用ReadAllLines;使用ReadLines
//Where-让我们跳过空行(如果有)
变量行=文件
.ReadLines(路径)
.Where(line=>!string.IsNullOrWhiteSpace(line))
.Select(line=>line.Split(分隔符));
DataTable结果=新DataTable();
foreach(行中的字符串[]项){
//我们有没有要添加的列?
对于(int c=0;c=result.Columns.Count)
result.Columns.Add();
结果.行.添加(项);
}
返回结果;
}
...
DataTable myTable=FromCsvSimple(@“c:\MyCsv.csv”,“;”);

您会遇到哪些错误?“似乎不起作用”在这件事上对你毫无帮助。顺便说一句,欢迎光临!我建议您选择并阅读。顺便说一句:
ref DataTable dt
-为什么您认为这里需要
ref
?在代码中添加一些单元测试,以确保每个方法都能按预期工作。分别测试数据表的拆分和验证。您是否从中获得了有效的DataTable?我添加了一些调试点,它读取文件时没有任何问题,但无法将其添加到DataGridView。我现在都修好了。