相关疑难解决方法(0)

无论使用OleDb的工作表名称,从Excel文档获取第一张工作表

我有用户将他们的表单命名为各种疯狂的东西,但我希望能够获得Excel文档的第一张表,无论它的名称是什么.

我目前使用:

OleDbDataAdapter adapter = new OleDbDataAdapter(
"SELECT * FROM [sheetName$]", connString);
Run Code Online (Sandbox Code Playgroud)

无论它的名字是什么,我如何获得第一张纸?

谢谢.

.net oledb

30
推荐指数
2
解决办法
6万
查看次数

如何使用OLEDB获取Excel中的唯一Excel工作表名称列表; 过滤掉显示在元数据中的非工作表

我在使用OLEDB从Excel电子表格中获取工作表名称时遇到问题.问题是,当我使用GetOleDbSchemaTable时,生成的DataTable不仅仅包含实际的工作表名称; 它有"表"的额外行,我只能假设它们由Excel内部使用.

例如,如果我有一个名为myWorksheet的工作表,下面的代码最终可能会包含一个包含myWorksheet $,myWorksheet $ PrintTable和myWorksheet $ _的列表.只有第一个myWorksheet $记录用于实际工作表.其他人只是我不需要的垃圾.当您在元数据中查看它们时,它们看起来就像常规表,即使使用TABLE类型也是如此.

现在我只是手动过滤出名称中带有"$ _"或"$ Print"的内容,但谁知道其他Excel功能可能会使这些额外的记录以不同的格式出现.

有没有人知道获取实际工作表名称的最佳方法,而不是这些不是工作表的内部表?元数据中是否存在可以区分它们的东西?

 private ArrayList getXlsWorksheetNames(OleDb.OleDbConnection conn)
    {
        ArrayList wsList = new ArrayList();
        DataTable schemaTable;

        try
        {
            conn.Open();
            schemaTable = conn.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Tables, null);

            foreach (DataRow row in schemaTable.Rows)
            {
                //form.appendToResultsTxt("Adding worksheet to list: " + Environment.NewLine +
                //    "Name = " + row.Field<string>("TABLE_NAME") + "," + Environment.NewLine +
                //    "Type = " + row.Field<string>("TABLE_TYPE") + "," + Environment.NewLine + Environment.NewLine);
                wsList.Add(row.Field<string>("TABLE_NAME"));
            }
            conn.Close();
        }
        catch (Exception ex)
        {
            if (this.mode == …
Run Code Online (Sandbox Code Playgroud)

c# oledb excel

9
推荐指数
2
解决办法
2万
查看次数

你如何获得excel工作簿第一页的名称?

假设您不知道Excel工作簿中第一个工作表的名称.你想找到一种从第一页读取的方法.这个片段有时会起作用,但并非总是如此.只有我吗?或者有没有一个明智的方法来做到这一点?

            MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + inputFile + "';Extended Properties=Excel 8.0;");

            String[] excelSheets = new String[tbl.Rows.Count]; 
            int i = 0;
            foreach (DataRow row in tbl.Rows)
            {
                excelSheets[i] = row["TABLE_NAME"].ToString();
                i++;
            }
            string pageName = excelSheets[0]; 

            OleDbDataAdapter myAdapter = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM [" + pageName + "]", MyConnection);
Run Code Online (Sandbox Code Playgroud)

注意:我正在寻找第一个工作表的名称.

c# excel

3
推荐指数
1
解决办法
2万
查看次数

使用C#读取Excel文件 - 选择工作表

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

this.dataAdapter = 
    new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

.net c# oledb excel

1
推荐指数
1
解决办法
3777
查看次数

标签 统计

c# ×3

excel ×3

oledb ×3

.net ×2