【问题标题】:Reading Excel file with C# - Choose sheet使用 C# 读取 Excel 文件 - 选择工作表
【发布时间】:2010-05-16 16:29:50
【问题描述】:

我正在使用 C# 和 OleDB (12.0) 读取一个 excel 文件。在那里,我必须用我希望阅读的工作表的名称来指定 select 语句 ([Sheet1$])。

this.dataAdapter = 
    new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);

是否可以选择第一张表,无论名称是什么?

谢谢。

【问题讨论】:

    标签: c# .net excel oledb


    【解决方案1】:

    请参阅此答案以了解如何按顺序获取工作表名称列表:Using Excel OleDb to get sheet names IN SHEET ORDER

    这是我的版本,稍微短一点:

    public static IEnumerable<string> GetExcelSheetNames(string excelFile)
    {
        var connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
              "Data Source=" + excelFile + ";Extended Properties=Excel 8.0;";
        using (var connection = new OleDbConnection(connectionString))
        {
            connection.Open();
            using (var dt = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null))
            {
                return (dt ?? new DataTable())
                    .Rows
                    .Cast<DataRow>()
                    .Select(row => row["TABLE_NAME"].ToString());
            }
        }
    }
    

    【讨论】:

    • 这行得通,但请注意,它似乎还返回其他东西,而不仅仅是工作表,所以你可能不得不过滤掉它们(我现在不记得了,但我认为它被命名为范围或其他东西就像列表中出现的那样)。
    • 谢谢。顺便说一句,“Extended Properties=Excel 8.0”无法打开 xlsx,必须使用“Extended Properties=Excel 12.0”。
    猜你喜欢
    • 2013-08-27
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多