我正在尝试解决当我尝试使用OLE DB读取Excel文件时遇到的问题。 我发现问题是因为工作表名称中有哈希标记(#)。
不幸的是,我无法重命名工作表。
所以经过一些尝试,我已经成功通过添加引号(')读取整张表:
之前
Select * from [" + sheetName + "$];
(工作)
之后Select * from ['" + sheetName + "$'];
但是当我尝试从具有OLE DB功能的工作表中读取范围时,我遇到了困难:
Select * from [" + sheetName + "$" + fromCell + ":" + toCell + "];
当我尝试发送此命令时,似乎#
被.
取代,然后找不到该表。
我尝试了很多组合和转义代码,但没有找到任何解决方案。如何访问此文件?
答案 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找到有关如何操作的指南。