如何从C#中的特定Excel工作表中选择

时间:2019-03-07 14:41:23

标签: c# oledbcommand

我在C#中有以下命令:

OleDbCommand cmd = new OleDbCommand("select * from[Sheet1$]", con);

当工作表称为Sheet1时,它的工作正常,但在我的情况下,工作表具有不同的名称。我该怎么做?

我已经尝试过这样的事情:

string sheetName = "First sheet";
OleDbCommand cmd = new OleDbCommand("select * from["+sheetName+"$]", con);

2 个答案:

答案 0 :(得分:0)

您必须从工作表名称中删除空格,例如更改:

string sheetName = "First sheet";

string sheetName = "FirstSheet";

不允许您在基于SQL的表名称中使用空格。

答案 1 :(得分:0)

如果正确设置工作表名称时遇到问题,则可以尝试GetOleDbSchemaTable()获取架构并将此值传递给OleDbCommand。请注意,仅当您现在在excel中定位工作表时,此方法才有效。

希望这会有所帮助!

                objConn = new OleDbConnection(constring);
                objConn.Open();
                // Get the data table containg the schema guid.
                var dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                var query = "select * from [" + dt.Rows[0]["TABLE_NAME"].ToString() + "]";

                DataSet ds = new DataSet();

                OleDbConnection con = new OleDbConnection(constring + "");
                OleDbDataAdapter da = new OleDbDataAdapter(sqlquery, con);
                da.Fill(ds);