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;
}
}
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");
Vous aurez probablement besoin de le référencer à partir de Rows
plutôt que comme une cellule
var cellValue = dt.Rows[i][j];
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.
Vous pouvez également appeler l'indexeur directement sur la variable datatable:
var cellValue = dt[i].ColumnName