web-dev-qa-db-fra.com

Obtenir la valeur de cellule d'un DataTable en C #

Voici un DataTable dt , qui contient beaucoup de données. 

Je veux obtenir la valeur spécifique Cell Value du DataTable, par exemple Cell [i, j] . Où, I -> Lignes et j -> Colonnes. Je vais itérer i, la valeur de j avec deux forloops.

Mais je n'arrive pas à comprendre comment appeler une cellule par son index.

Voici le code: 

for (i = 0; i <= dt.Rows.Count - 1; i++)
{
    for (j = 0; j <= dt.Columns.Count - 1; j++)
    {
        var cell = dt.Rows[i][j];
        xlWorkSheet.Cells[i + 1, j + 1] = cell;
    }
}
31
Abdur Rahim

La DataRow a aussi un indexeur :

Object cellValue = dt.Rows[i][j];

Mais je préférerais la méthode fortement typée Field extension qui supporte également les types nullable :

int number = dt.Rows[i].Field<int>(j);

ou encore plus lisible et moins sujet aux erreurs avec le nom de la colonne:

double otherNumber = dt.Rows[i].Field<double>("DoubleColumn");
84
Rango

Vous aurez probablement besoin de le référencer à partir de Rows plutôt que comme une cellule

var cellValue = dt.Rows[i][j];
9
Chamila Chulatunga

Vous pouvez itérer DataTable comme ceci:

private void button1_Click(object sender, EventArgs e)
{
    for(int i = 0; i< dt.Rows.Count;i++)
        for (int j = 0; j <dt.Columns.Count ; j++)
        {
            object o = dt.Rows[i].ItemArray[j];
            //if you want to get the string
            //string s = o = dt.Rows[i].ItemArray[j].ToString();
        }
}

Selon le type de données dans la cellule DataTable, vous pouvez convertir l'objet en tout ce que vous voulez.

3
Nikola Davidovic

Vous pouvez également appeler l'indexeur directement sur la variable datatable:

var cellValue = dt[i].ColumnName
0
Emre Inan