Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Excel工作表名称中使用哈希符号(#)_Excel_Oledb - Fatal编程技术网

在Excel工作表名称中使用哈希符号(#)

在Excel工作表名称中使用哈希符号(#),excel,oledb,Excel,Oledb,当我试图使用OLE DB读取Excel文件时,我试图解决一个问题。 我发现问题是因为在工作表名称中有一个哈希标记(#) 不幸的是,我无法重命名该工作表 因此,经过一些尝试,我通过添加引号(')成功地阅读了整张纸: 之前 Select * from [" + sheetName + "$]; 工作后 但是,当我试图从具有OLE DB功能的工作表中读取范围时,我被卡住了: Select * from [" + sheetName + "$" + fromCell + ":" + toCell +

当我试图使用OLE DB读取Excel文件时,我试图解决一个问题。 我发现问题是因为在工作表名称中有一个哈希标记(#)

不幸的是,我无法重命名该工作表

因此,经过一些尝试,我通过添加引号(')成功地阅读了整张纸:

之前

Select * from [" + sheetName + "$];
工作后

但是,当我试图从具有OLE DB功能的工作表中读取范围时,我被卡住了:

Select * from [" + sheetName + "$" + fromCell + ":" + toCell + "];
当我尝试发送此命令时,似乎
#
替换,然后它找不到工作表


我试过很多密码和转义码,但没有找到任何解决办法。如何访问此文件?

您的最终输出应如下所示

'MySheet$A1:B2'
因此,您的
选择应该是

var SheetName = "MySheet";
var fromCell = "A1";
var toCell = "B2";
var sql = "Select * from ['" + SheetName + "$" + fromCell + ":" + toCell + "']";
Console.WriteLine(sql);

// Output
// Select * from ['MySheet$A1:B2']

还考虑参数化SQL以提高可读性,并防止SQL代码注入。您可以在上找到如何执行此操作的指南。

我已为您的
sql
提供了所需的格式,以便在我的答案中使用此范围。您还需要知道的是,不同版本的Microsoft Office Access数据库引擎以不同的方式处理其命令中的范围。因此,如果您坚持使用最新的(2010 atm),特别是如果您要使用活动范围和工作表范围范围,而不是全局工作簿范围。
var SheetName = "MySheet";
var fromCell = "A1";
var toCell = "B2";
var sql = "Select * from ['" + SheetName + "$" + fromCell + ":" + toCell + "']";
Console.WriteLine(sql);

// Output
// Select * from ['MySheet$A1:B2']