【问题标题】:How can I use named range in Excel with OleDB?如何在 Excel 中将命名范围与 OleDB 一起使用?
【发布时间】:2013-06-11 03:41:28
【问题描述】:

我正在尝试使用 ASP .NET/C# 从 Excel 中的特定命名范围中提取数据。这是我要提取的示例。

我想要的是使用名称“RANGE_NAMED”的“B”、“C”、“D”。可以用 OleDB 做到这一点吗?

最好的问候,

亚历克斯。

【问题讨论】:

    标签: c# asp.net excel oledb extract


    【解决方案1】:

    你可以试试这个代码

    using(OleDbConnection c = new OleDbConnection(con))
    {
        c.Open();
        string selectString = "SELECT * FROM [RANGE_NAMED]";
        using(OleDbCommand cmd1 = new OleDbCommand(selectString))
        {
              cmd1.Connection = c;
            var result = cmd1.ExecuteReader();
            while(result.Read())
            {
                  Console.WriteLine(result[0].ToString());
            }
        }
    }
    

    【讨论】:

    • 据我了解,查询只是从范围中提取文本数据。这可以用来对范围内的单元格执行HasFormula 吗?
    • 如果您参考this,那么我认为不会,因为这不是通过 Interop 使用的,而是通过 OleDb 使用的
    • 我看过那个链接,只是想知道OleDb 中是否有这样的属性。如果无论如何我们可以将上述result 中的范围序列化,并在通过阅读器读取时将其反序列化为C# 中的excel 范围。我只是在大声思考——如果你能指出任何相关信息,那就太好了。
    • 我无法让它工作。它跳过了while循环。我的命名范围内只有一个值,这会影响它吗?
    【解决方案2】:

    好吧,这很明显,我不知道为什么它第一次不起作用......

    SELECT * FROM RANGE_NAMED
    

    我得到 B、C、D。

    【讨论】:

      猜你喜欢
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      相关资源
      最近更新 更多