【发布时间】:2021-10-09 11:08:14
【问题描述】:
我有一个 Excel 文件,我想在 c# 中使用 OleDb 对其进行 raed,如下代码:
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 子句中的语法错误。
我在这里搞砸了,谢谢。
【问题讨论】:
-
仔细检查工作表的名称。您在
topos和.architectures之间添加了一个空格 -
谢谢您的回答。我使用一个函数以编程方式获得它的工作表名称,该函数让我获得 excel 文件中第一张工作表的名称,这意味着空间在那里
-
你能在
OleDbCommand("select * from [" + sheetName + "$];上打个断点,然后把名字和excel表比较一下吗? -
是的,我做了一个我发现它是一样的,文件中工作表的重命名使它工作,但我需要使用文件中的名称。
标签: c# .net excel office365 oledb