这是一个 DataTable dt ,它有很多数据。
我想从DataTable中获取特定的 Cell Value ,例如 Cell [i,j] 。哪里,
我 - >行和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;
}
}
答案 0 :(得分:89)
DataRow
还有indexer:
Object cellValue = dt.Rows[i][j];
但我更喜欢强类型的Field
扩展方法,该方法也支持nullable types:
int number = dt.Rows[i].Field<int>(j);
使用列的名称甚至更具可读性且不易出错:
double otherNumber = dt.Rows[i].Field<double>("DoubleColumn");
答案 1 :(得分:9)
您可能需要从Rows
而不是单元格中引用它:
var cellValue = dt.Rows[i][j];
答案 2 :(得分:4)
您可以像这样迭代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
单元格中的数据类型,您可以将对象转换为您想要的任何内容。
答案 3 :(得分:1)
要获取单元格列名称以及单元格值:
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(dataList);
}
答案 4 :(得分:0)
您也可以直接在数据表变量上调用索引器:
var cellValue = dt[i].ColumnName
答案 5 :(得分:-2)
如果我已正确理解您的问题,您想显示填充数据表的一个特定单元格?这就是我用来在DataGrid中显示给定单元格的内容。
var s = dataGridView2.Rows[i].Cells[j].Value;
txt_Country.Text = s.ToString();
希望这有帮助