|
|
Подключение к excel при помощи ado. Как узнать имя листа по его номеру? |
☑ |
|
0
palpetrovich
17.04.12
✎
17:13
|
Примерно такой код:
СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+ИмяФайла+"; Extended Properties=""Excel 8.0;""";
Connection = Новый COMОбъект("ADODB.Connection");
Connection.Open(СтрокаПодключения);
RecordSet = Connection.Execute("SELECT * FROM [Лист" + НомерЛиста + "$]");
Когда листы эксель называются Лист1, Лист2... то все работает замечательно, но в реальности имена листов обычно любят переименовывать...
|
|
|
1
КМ155
17.04.12
✎
17:15
|
(0) ADOX
|
|
|
2
palpetrovich
17.04.12
✎
17:18
|
(1) о, точно, где-то видел. Спасибо
|
|
|
3
КМ155
17.04.12
✎
17:20
|
(2) АCon = Новый COMОбъект ("ADODB.Connection");
АCon.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\777.xls;Extended Properties=""Excel 8.0;HDR=No;IMEX=1""");
ХCat=Новый COMОбъект ("ADOX.Catalog");
ХCat.ActiveConnection = АCon;
этаХня=ХCat.Tables.Item(0).Name;
|
|
|
4
palpetrovich
17.04.12
✎
17:38
|
(3) Да, работает, спасибо.
Правда кроме существующих листов возвращает еще что-то. К прмеру, последний, 3-тий лист называется Invoice$, так на номер+1 возвращает: Invoice$Print_Area
|
|
|
5
КМ155
17.04.12
✎
17:42
|
(4) дык у листов и тип есть
Для Каждого чётотам Из ХCat.Tables Цикл
Если чётотам.Type="TABLE" Тогда
Сообщить(MDBТаблица.Name);
КонецЕсли;
КонецЦикла;
|
|
|
6
palpetrovich
17.04.12
✎
17:51
|
(5) забавненький результат:
н=0;
Для Каждого чётотам Из axCatalog.Tables Цикл
Сообщить("Имя:" + чётотам.Name + " Type: " + чётотам.Type);
н=н+1;
КонецЦикла;
Имя:'Bank Details$' Type: TABLE
Имя:'Packing List$' Type: TABLE
Имя:Invoice$ Type: TABLE
Имя:Invoice$Print_Area Type: TABLE
|
|
|
7
palpetrovich
17.04.12
✎
17:59
|
странненько, есть кавычки или нет - лист читает верно :)
|
|
|
8
КМ155
17.04.12
✎
18:20
|
(6)
(7)
msdn кури
|
|
|
9
etc
17.04.12
✎
20:12
|
без ADOX:
dbCon = Новый COMОбъект("ADODB.Connection");
dbCon.Provider = "Microsoft.Jet.OLEDB.4.0";
dbCon.Properties("Data Source").Value = Файл.ПолноеИмя;
dbCon.Properties("Extended Properties").Value = "Excel 8.0;HDR=Yes;IMEX=1";
dbCon.Open();
rst = Новый COMОбъект("ADODB.Recordset");
rst = dbCon.OpenSchema(20);
СписокТаблиц = Новый Массив;
Пока НЕ rst.EOF Цикл
СписокТаблиц.Добавить(rst.Fields("TABLE_NAME").Value);
rst.MoveNext();
КонецЦикла;
rst.Close();
|
|
|
10
Torquader
17.04.12
✎
23:44
|
Каталог возвращает имена листов и имена областей на листах в одном месте,что немного непонятно - но сделано именно так.
|
|
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой