我在C#中有以下命令:
OleDbCommand cmd = new OleDbCommand("select * from[Sheet1$]", con);
当工作表称为Sheet1时,它的工作正常,但在我的情况下,工作表具有不同的名称。我该怎么做?
我已经尝试过这样的事情:
string sheetName = "First sheet";
OleDbCommand cmd = new OleDbCommand("select * from["+sheetName+"$]", con);
答案 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);