在Excel工作表名称中使用井号(#)

时间:2013-11-07 18:01:58

标签: excel oledb

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

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

所以经过一些尝试,我已经成功通过添加引号(')读取整张表:

之前

Select * from [" + sheetName + "$];

(工作)

之后
Select * from ['" + sheetName + "$'];

但是当我尝试从具有OLE DB功能的工作表中读取范围时,我遇到了困难:

Select * from [" + sheetName + "$" + fromCell + ":" + toCell + "];

当我尝试发送此命令时,似乎#.取代,然后找不到该表。

我尝试了很多组合和转义代码,但没有找到任何解决方案。如何访问此文件?

1 个答案:

答案 0 :(得分:0)

您的最终输出应如下所示

'MySheet$A1:B2'

所以你的select应该是

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代码注入。您可以在OleDbCommand.Parameters找到有关如何操作的指南。