Имя: Пароль:
1C
1С v8
Подключение к 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
Каталог возвращает имена листов и имена областей на листах в одном месте,что немного непонятно - но сделано именно так.