繁体   English   中英

从 C# 中的数据表中获取单元格值

[英]Get Cell Value from a DataTable in C#

这是一个DataTable dt ,它有很多数据。

我想从数据表中获取特定的单元格值,比如Cell[i,j] 其中,i -> 行和 j -> 列。 我将用两个forloops迭代 i,j 的值。

但我不知道如何通过索引调用单元格。

这是代码:

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

DataRow还有一个索引器

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

但我更喜欢强类型Field扩展方法,它也支持可为空类型

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

或者使用列名更易读且不易出错:

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

您可能需要从Rows而不是作为单元格引用它:

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

您可以像这样迭代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单元格中数据的类型,您可以将对象转换为您想要的任何内容。

要获取单元格列名称以及单元格值:

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

}

您也可以直接在数据表变量上调用索引器:

var cellValue = dt[i].ColumnName

如果我正确理解了您的问题,您想显示填充数据表的一个特定单元格吗? 这是我用来在我的 DataGrid 中显示给定单元格的内容。

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

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM