2

Excel ファイルの読み取りに OLE DB を使用しようとしているときに発生する問題を解決しようとしています。問題は、シート名にハッシュ記号 (#)があるためであることがわかりました。

残念ながら、シートの名前を変更することはできません。

いくつかの試行の後、引用符 (') を追加することでシート全体を読み取ることに成功しました。

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 に答える