"Syntax error in FROM clause" Excel 在 C# 中

"Syntax error in FROM clause" Excel in c#

我有一个 Excel 文件,我想使用 OleDb 在 c# 中读取它,如下面的代码:

    string sheetName = "sheet1";
    try
    {
        string stringConnection = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=excelfile.xls;Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;MAXSCANROWS=0';";
    
        OleDbConnection OleDbConnection_ = new OleDbConnection(stringConnection);
        OleDbCommand OleDbCommand_ = new OleDbCommand("select * from [" + sheetName + "$]; ", OleDbConnection_);
        OleDbConnection_.Open();
    
        DataTable DataTable_ = new DataTable();
        DataTable_.Load(OleDbCommand_.ExecuteReader(), LoadOption.OverwriteChanges);
    
        OleDbConnection_.Close();
    
    }
    catch (Exception)
    {
        throw;
    }

一切正常,就在我将 SheetName 值更改为 " topos .architectures.bureaux " 就像我在 xls 文件中的名称一样,显示异常:

FROM 子句中的语法错误。

我搞砸了什么,谢谢。

我认为您只需删除 "select * from [" + sheetName + "$]; "

中的 $

$ 确实在 Excel 本身的引用中使用,但我认为它不适用于 OleDB 命令语法

参考这个问题:Reading from excel using oledbcommand

问题出在 Sheet 名称中的圆点,圆点应该是 #。

像那样:

"select * from ['" + sheetName.Replace('.', '#') + "$'];"