2

OleDbConnection を使用して、Excel ファイルからシート名のリストを取得しようとしています。(注: このプログラムはサーバー上で実行されるため、Office 相互運用クラスを使用するオプションはありません)。したがって、次のコードですべてが正常に機能し、シート名が返されます。

        var dt = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

        foreach (DataRow row in dt.Rows)
        {
            string sheetName = row["TABLE_NAME"].ToString();
        }

ただし、Excel シート名にドット「.」が含まれている場合は、「#」に変換されます。たとえば、Excel ファイルに次のシート名があるとします。

Sheet.1
Sheet#1

上記のコードは次を返します。

"Sheet#1$"
"'Sheet#1$'"

そして、シート名は基本的に同じになりました。悪くなる!!! 次のコードに従って Sheet.1 からデータを読み取る場合:

var adapter = new OleDbDataAdapter("SELECT * FROM ['Sheet.1$']", connectionString);

実際には、「sheet.1」ではなく「sheet#1」からデータを読み取ります。

どんな助けでも大歓迎です。

4

0 に答える 0