Привет всем, я пытаюсь получить список имен листов из файла 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».оценили.