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

问题描述 投票:3回答:2

我在C#(和SQL Server)中处理Excel数据。我需要能够在任何有问题的excel行上向最终用户报告。自然的方法是给出Excel行号。但是,我不知道如何获得该行号以供参考。

我有这样的事情:

OleDbCommand cmd = new OleDbCommand("SELECT * FROM MyWorkSheet$", conn);

并希望这样的事情:

OleDbCommand cmd = new OleDbCommand("SELECT ExcelRowId,* FROM MyWorkSheet$," conn);

SQL:ROW_NUMBER()确实有效,因为我无法提供适当的ORDER BY。 Excel's:查询字符串中无法访问ROW()。

c# excel oledb
2个回答
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++;
    }
}

这似乎是可靠的,但它仍然感觉像是可以更自然地发生的那种事情。


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文件中的行号相关的行的索引。

© www.soinside.com 2019 - 2024. All rights reserved.