2

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

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

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

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

(工作)之后

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

但是,当我尝试使用 OLE DB 功能从工作表中读取范围时,我被卡住了:

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

当我尝试发送此命令时,似乎#被替换为.然后找不到工作表。

我尝试了许多组合和转义码,但没有找到任何解决方案。我怎样才能访问这个文件?

4

1 回答 1

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找到如何操作的指南。

于 2014-12-16T07:13:13.513 回答