Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.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# 从DataGrid而非csv文件读取到数组/列表中_C#_.net_Csv_Datagridview - Fatal编程技术网

C# 从DataGrid而非csv文件读取到数组/列表中

C# 从DataGrid而非csv文件读取到数组/列表中,c#,.net,csv,datagridview,C#,.net,Csv,Datagridview,我有下面的代码片段,它读取包含数据的csv文件并将它们存储在数组中 private static void ProcessFile() { var lines = File.ReadLines("Data.csv"); var numbers = ProcessRawNumbers(lines); ****Some variables I use later on**** var rowTotal = new List<double>(); v

我有下面的代码片段,它读取包含数据的csv文件并将它们存储在数组中

private static void ProcessFile()
{
    var lines = File.ReadLines("Data.csv");
    var numbers = ProcessRawNumbers(lines);
    ****Some variables I use later on****
    var rowTotal = new List<double>();
    var squareRowTotal = new List<double>();
}
我想在DataGridView中以行和列的形式输入上述数据,并处理行和数字。
我不知道怎么做,你能帮我吗?

你可以使用双for循环进行处理:

for (int rows = 0; rows < dataGrid.Rows.Count; rows++)
{
    for (int cols= 0; cols < dataGrid.Rows[rows].Cells.Count; cols++)
    {
        var value = dataGrid.Rows[rows].Cells[cols].Value.ToString();
    }
}
for(int rows=0;rows
就我理解你的问题而言,请始终详细解释。 我的建议如下:

逻辑: 声明一个字符串数组,读取每一行并将数据填入字符串数组。 然后,将其转换为datatable并将其绑定到DataGridView。 您可以在网格事件中执行rowTotal和SquareTotal

private static void ProcessFile()
{
    string lines;
    string[] ContentData;
    bool blnReadFile = true;
    while (blnReadFile)
    {
        lines = File.ReadLines("Data.csv");
        if (String.IsNullOrEmpty(content))
        {
            blnReadFile = false;
        }
        else
        {
            ContentData = ProcessRawNumbers(lines); /* Ihave retained your metod to get each line */

        }
    }
    DataTable dt = ArrayToDataTable(ContentData);
    dg.DataSource = dt; /* dg refers to Datagrid */
    dg.DataBind();
}

public DataTable ArrayToDataTable(string[] arr)
{
    DataTable dt = new DataTable();
    string[] header = arr[0].Split(',');
    foreach (string head in header)
    {
        dt.Columns.Add(head);
    }

    for (int theRow = 0; theRow < arr.Length; theRow++)
    {
        if (theRow != 0)
        {
            string str = arr[theRow];
            string[] item = str.Split(',');
            DataRow dr = dt.NewRow();
            for (int theColumn = 0; theColumn < item.Length; theColumn++)
            {
                dr[theColumn] = item[theColumn];
            }
            dt.Rows.Add(dr);
        }
    }

    return dt;
}
private static void ProcessFile()
{
弦线;
字符串[]ContentData;
bool blnredfile=true;
while(blnReadFile)
{
行=File.ReadLines(“Data.csv”);
if(String.IsNullOrEmpty(content))
{
blnReadFile=false;
}
其他的
{
ContentData=ProcessRawNumber(行);/*我保留了获取每行的方法*/
}
}
DataTable dt=ArrayToDataTable(ContentData);
dg.DataSource=dt;/*dg指数据网格*/
dg.DataBind();
}
公共数据表ArrayToDataTable(字符串[]arr)
{
DataTable dt=新的DataTable();
字符串[]头=arr[0]。拆分(',');
foreach(标题中的字符串头)
{
dt.列。添加(标题);
}
for(int-theRow=0;theRow
此ArrayList在哪里?发布更多代码总是比发布更少更好…@JohnSaunders:File。Readlines读取csv文件中的每一行,ProcessRawNumber读取每一行中的单个数字。它以列表形式存储,我以后会使用它进行处理。您询问的是ArrayList,但我在您的代码中没有看到。@JohnSaunders,我认为作者指的是数组或列表,他不确定使用哪一个。
private static void ProcessFile()
{
    string lines;
    string[] ContentData;
    bool blnReadFile = true;
    while (blnReadFile)
    {
        lines = File.ReadLines("Data.csv");
        if (String.IsNullOrEmpty(content))
        {
            blnReadFile = false;
        }
        else
        {
            ContentData = ProcessRawNumbers(lines); /* Ihave retained your metod to get each line */

        }
    }
    DataTable dt = ArrayToDataTable(ContentData);
    dg.DataSource = dt; /* dg refers to Datagrid */
    dg.DataBind();
}

public DataTable ArrayToDataTable(string[] arr)
{
    DataTable dt = new DataTable();
    string[] header = arr[0].Split(',');
    foreach (string head in header)
    {
        dt.Columns.Add(head);
    }

    for (int theRow = 0; theRow < arr.Length; theRow++)
    {
        if (theRow != 0)
        {
            string str = arr[theRow];
            string[] item = str.Split(',');
            DataRow dr = dt.NewRow();
            for (int theColumn = 0; theColumn < item.Length; theColumn++)
            {
                dr[theColumn] = item[theColumn];
            }
            dt.Rows.Add(dr);
        }
    }

    return dt;
}