当我使用oledb C#读取excel时,它正在成功检索数据。但是当工作表名称包含#
时,它不会读取数据。它给出以下错误。
不是有效名称。确保它不包含无效字符或标点符号,并且不会太长。
我猜Oledb将#
字符转换为.
。
答案 0 :(得分:0)
OpenXML是最好的出路。 只有存在“#”时才会出现问题,但任何重命名的工作表都会出现问题。
答案 1 :(得分:0)
Karthik,
您能否发布您的代码以便我们检查?
我尝试了以下并且效果很好。
DataTable dtSheet = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
foreach (DataRow dr in dtSheet.Rows)
{
string sheetName = dr["TABLE_NAME"].ToString();
cmd.CommandText = "SELECT * FROM [" + sheetName + "]";
DataTable dt = new DataTable();
dt.TableName = sheetName;
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
da.Fill(dt);
ds.Tables.Add(dt);
}
另请注意,如果您错过将表(工作表)名称放在括号“[]”
中,则代码将无法读取工作表