Имя: Пароль:
1C
1C 7.7
v7: Как через Йоксель загрузить в ТЗ определённый Лист Ексель?
0 evgpinsk_
 
06.11.23
20:12
Собственно вопрос в теме:
Как через Йоксель загрузить в ТЗ определённый Лист Ексель?

простой код читает первый лсит:
Конвертер = СоздатьОбъект("Йоксель.КонвертерВТаблицуЗначений");
Конвертер.УстановитьДокумент(Таб);
ТЗ = Конвертер.Загрузить();

Как прописать чтение определённого листа?
п.с. гугл не помог (
1 Злопчинский
 
06.11.23
21:49
там есть получение списка листов и чтение листа.
на родном сайте вроде ж все есть, в т.ч. и демо конфига
2 Злопчинский
 
06.11.23
21:58
//*********************************************************
// ОткрытьКнигу()
// Возвращаемое значение: Нет
// Описание: получает список листов
Процедура ОткрытьКнигу()
    
    Конвертер = СоздатьОбъект("КонвертерExcel");
    Листы = Конвертер.Открыть(ВыбФайл).Листы;
    
    ТЗЛисты.УдалитьСтроки ();
    КолвоЛистов = Листы.Количество();
    Для  ы = 1 По КолвоЛистов
    Цикл Лист = Листы.Получить(ы);
        Если  Лист.Тип <> 0
        Тогда Продолжить;
        КонецЕсли;
        
        ТЗЛисты.НоваяСтрока ();
        ТЗЛисты.Лист = Лист.Имя;
    КонецЦикла;
    Форма.рЛисты.Заголовок("  всего: "+ТЗЛисты.КоличествоСтрок()+" листов  ");
    Попытка ТЗЛисты.ТекущаяСтрока(1);
    Исключение
    КонецПопытки;
    ПриВыбореЛиста();
КонецПроцедуры //ОткрытьКнигу()
3 Злопчинский
 
06.11.23
21:59
//*********************************************************
Процедура кнПросмотрЛиста()
    Если ТЗЛисты.КоличествоСтрок()=0
    Тогда
        Предупреждение("Не выбран файл данных!      ",20);
        Возврат;
    КонецЕсли;

    Конвертер     = СоздатьОбъект ("КонвертерExcel");
    Документ     = Конвертер.Открыть(ВыбФайл).ЗагрузитьЛист(ТЗЛисты.Лист);

    Фрейм = Документ.Показать("просмотр листа: "+ТЗЛисты.Лист);
    Фрейм.ВыводСетки(1);
    
    Конвертер     = "";
    Документ     = "";
КонецПроцедуры //кнПросмотрЛиста()
4 Злопчинский
 
06.11.23
22:00
ОчиститьОкноСообщений();
    Сообщить(ТекущееВремя()+": Начало процедуры загрузки данных");
    Сообщить(ТекущееВремя()+": чтение данных листа <"+ТЗЛисты.Лист+"> файла <"+ВыбФайл+">");
    
    Конвертер = СоздатьОбъект ("КонвертерExcel");
    гКнига         = Конвертер.Открыть(ВыбФайл);
    Документ     = гКнига.ЗагрузитьЛист(ТЗЛисты.Лист);
    
    Сообщить(ТекущееВремя()+": преобразование данных в таблицу...");
    Конвертер = СоздатьОбъект ("Йоксель.КонвертерВТаблицуЗначений");
    Конвертер.УстановитьДокумент(Документ);
    Конвертер.ОпределятьСтруктуру     = 0;
    Конвертер.ПроверятьСтруктуру    = 0;
    Конвертер.СтрокДляОпределенияСтруктуры = 15;
    ТЗ = Конвертер.Загрузить();
5 ЯнСмит
 
07.11.23
10:20
Ну нафиг Йоксель, как-то не зашел совсем в свое время, всю жизнь использую компоненту xls21c там это вместо здрасьте )
6 evgpinsk_
 
07.11.23
11:38
Я что-то туплю, пытаюсь разобраться. В примере выше (3) ексель файл читается в "ТабличныйДокумент" ёкселя через объект "КонвертерЕксель".

В моём исходном коде (0) я использую объект Таб = СоздатьОбъект ("ТабличныйДокумент");

и через метод Открыть - открываю екселевский файл.
Я правильно понимаю, что объект ТабличныйДокумент может открыть только первый лист файла ексель? И указать ему какой лист открывать нет возможности?
7 evgpinsk_
 
07.11.23
11:54
И не пойму, а ТабличныйДокумент ёкселя выгрузить в ТаблицуЗначений 1с нельзя?

Можно только в другую сторону - читать из ТаблицыЗначений?
8 Злопчинский
 
07.11.23
13:04
(6) что тебе не подходить в (4)...?
9 Злопчинский
 
07.11.23
13:12
(7) Йоксель.КонвертерВТаблицуЗначений

Конвертер !!!!табличных документов!!! Йокселя в таблицу значений.
.
Эксель открывается в ТабличныйДокумент (аналог мокселя).
табличный документ можно конвертировать в ТЗ
10 Злопчинский
 
07.11.23
13:13
11 evgpinsk_
 
07.11.23
14:13
(8) Весь код существующий расписан через использование внутренних Таблиц 1с. Не хочется его переделывать /многовато кода/.
12 evgpinsk_
 
07.11.23
14:19
(9) Я в (0) и пишу что я использую этот объект Йоксель.КонвертерВТаблицуЗначений.
И один из двух вопрос мой был в том, как с помощью этого объекта прочитать конкретный лист ексель /я не нашёл такой метод/ у объекта Йоксель.КонвертерВТаблицуЗначений.

И второй вопрос был чуть позже, как "табличный документ можно конвертировать в ТЗ"
я не нашёл такой метод  на сайте ёкселя
13 Злопчинский
 
07.11.23
14:34
(11) что переделывать? На выходе использования йокселя получаешь ТЗ. Всё.
14 Злопчинский
 
07.11.23
14:53
(12) ну почитай Доку.
.
Йоксель.КонвертерВТаблицуЗначений
Конвертирует табличный документ в ТЗ. Это ответ на 2 вопрос. Табличный документ к экселю отношения не имеет. Соответственно ответ на 1 вопрос - никак.
.
Используйте термин йоксель. А не ëксель.
15 Злопчинский
 
07.11.23
14:53
Для решения твоей задачи для получения произвольного листа экселя - используй методы работы с экселем: ("КонвертерExcel")
С его помощью можешь получить перечень л стов и загружать произвольный лист В ТАБЛИЧНЫЙ ДОКУМЕНТ. А дальше см предыдущий пост - конвертируй тд, который не имеет ни какого отношения к экселю, в ТЗ.
16 Злопчинский
 
07.11.23
14:59
Конвертер1 = СоздатьОбъект ("КонвертерExcel");
    гКнига         = Конвертер1.Открыть(ВыбФайл);
    ТД    = гКнига.ЗагрузитьЛист(тутимялиста);
Конвертер2 = СоздатьОбъект ("Йоксель.КонвертерВТаблицуЗначений");
Конвертер2.УстановитьДокумент(ТД)
    //тут настройки конвертера
    ТЗ = Конвертер2.Загрузить();
17 Злопчинский
 
07.11.23
15:03
Конвертер2.УстановитьДокумент(Конвертер1.Открыть(ВыбФайл).ЗагрузитьЛист(ИмяЛиста));
18 Злопчинский
 
07.11.23
15:22
(5) если не влом положи скачать и Доку если есть или пример с методаии
19 evgpinsk_
 
07.11.23
16:42
(15) Спс, разобрался