Использование OleDbConnection для извлечения имен листов Excel со специальными символами - PullRequest
2 голосов
/ 21 апреля 2011

Привет всем, я пытаюсь получить список имен листов из файла Excel, используя OleDbConnection.(ПРИМЕЧАНИЕ. Эта программа будет работать на сервере, поэтому нет возможности использовать классы взаимодействия с офисом).Таким образом, все прекрасно работает со следующим кодом и возвращает имена листов:

        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);

он будет фактически считывать данные из «листа №1», а не «sheet.1».оценили.

...