我可以使用OleDB获取Excel行号吗?

时间:2015-02-06 18:01:47

标签: c# excel oledb

我在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()。

2 个答案:

答案 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文件中的行号相关的数据表中行的索引。