55

これがDataTabledtで、これには大量のデータが含まれています。

DataTableから特定のセル値( Cell [i、j]など)を取得したいと思います。ここで、i->行とj->列。i、jの値を2で繰り返しforloopsます。

しかし、インデックスでセルを呼び出す方法がわかりません。

コードは次のとおりです。

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;
    }
}
4

6 に答える 6

131

インデクサーDataRowもあります:

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

しかし、 null許容型Fieldもサポートする強い型の拡張メソッドを好むでしょう:

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

または、列の名前を使用すると、さらに読みやすく、エラーが発生しにくくなります。

double otherNumber = dt.Rows[i].Field<double>("DoubleColumn");
于 2012-12-11T08:45:53.507 に答える
13

Rowsおそらく、セルとしてではなく、から参照する必要があります。

var cellValue = dt.Rows[i][j];
于 2012-12-11T08:45:08.450 に答える
5

DataTable次のように繰り返すことができます。

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();
        }
}

セル内のデータのタイプに応じてDataTable、オブジェクトを任意の場所にキャストできます。

于 2012-12-11T08:48:28.767 に答える
3

セルの列名とセルの値を取得するには:

List<JObject> dataList = new List<JObject>();

for (int i = 0; i < dataTable.Rows.Count; i++)
{
    JObject eachRowObj = new JObject();

    for (int j = 0; j < dataTable.Columns.Count; j++)
    {
        string key = Convert.ToString(dataTable.Columns[j]);
        string value = Convert.ToString(dataTable.Rows[i].ItemArray[j]);

        eachRowObj.Add(key, value);

    }

    dataList.Add(eachRowObj);

}
于 2019-03-29T08:29:14.230 に答える
1

データテーブル変数でインデクサーを直接呼び出すこともできます。

var cellValue = dt[i].ColumnName
于 2014-10-05T12:34:02.680 に答える
-2

私があなたの質問を正しく理解した場合、あなたはあなたの入力されたデータテーブルの1つの特定のセルを表示したいですか?これは、DataGridで特定のセルを表示するために使用したものです。

var s  = dataGridView2.Rows[i].Cells[j].Value;
txt_Country.Text = s.ToString();

お役に立てれば

于 2017-06-01T09:24:38.027 に答える