我在C#(和SQL Server)中处理Excel数据。我需要能够在任何有问题的excel行上向最终用户报告。自然的方法是给出Excel行号。但是,我不清楚如何获取该行号以供参考。
我有这样的事情:
OleDbCommand cmd = new OleDbCommand("SELECT * FROM MyWorkSheet$", conn);
并想要这样的事情:
OleDbCommand cmd = new OleDbCommand("SELECT ExcelRowId,* FROM MyWorkSheet$," conn);
SQL&#39>:ROW_NUMBER()确实有效,因为我无法提供合适的ORDER BY。 Excel' s:查询字符串中无法访问ROW()。
答案 0 :(得分:2)
到目前为止,答案似乎是“不”,但我可以稍后创建。
int row;
foreach (DataTable t in ds.Tables)
{
t.Columns.Add("RowNum",typeof(Int32));
row = 1;
foreach (DataRow r in t.Rows)
{
r["RowNum"] = row++;
}
}
这似乎是可靠的,但它仍然感觉像是可以更自然地发生的事情。
答案 1 :(得分:0)
以以下示例代码为基础:
int row;
foreach (DataTable t in ds.Tables)
{
t.Columns.Add("RowNum",typeof(Int32));
row = 1;
foreach (DataRow r in t.Rows)
{
r["RowNum"] = row++;
}
}
每个Datatable对象(
DataTable t;
)有一个DataTable.Rows Property
(
t.Rows
)返回DataRowCollection Class
。使用DataRowCollection.IndexOf(DataRow) Method
(
t.Rows.IndexOf(r)
),您可以知道与Excel文件中的行号相关的数据表中行的索引。