Имя: Пароль:
1C
1С v8
Обработка определенного листа Excel
0 SkillUp
 
11.04.19
09:35
Здр., подскажите, для обработки, допустим 2-ого листа Экселя нужно так?

Лист = Книга.Worksheets(2);

или напутал чего?

Не пойму, почему обработка идет первой страницы всегда?
1 SkillUp
 
11.04.19
09:41
Пардон, речь идет о листах, а не о страницах. Надо обработать 2-ой лист...
2 1Сергей
 
11.04.19
09:43
Всё верно, это обращение ко второму листу
3 SkillUp
 
11.04.19
09:44
(2) тю, блин... спасибо!
Буду искать причину, тогда...
4 1Сергей
 
11.04.19
09:44
Для проверки попробуй

Книга.Worksheets(1).Name
Книга.Worksheets(2).Name
5 SkillUp
 
11.04.19
09:45
Вот у меня:
    //очищаем таблицу и удаляем колонки
    Таблица.Очистить();
    Таблица.Колонки.Очистить();
    ЭлементыФормы.Таблица.Колонки.Очистить();
    
    ИмяФайла = ПолеВвода1;
    
    // Создание COM-объекта
    Excel = Новый COMОбъект("Excel.Application");

    // Открытие книги
    Книга = Excel.Workbooks.Open(ПолеВвода1);
    // Позиционирование на нужном листе
    Лист = Книга.Worksheets(НомерСтраницы);
    
    //Получим количество строк и колонок.
    //В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel
    Версия = Лев(Excel.Version,Найти(Excel.Version,".")-1);
    Если Версия = "8" тогда ФайлСтрок = Excel.Cells.CurrentRegion.Rows.Count;
        ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13);
    Иначе
        ФайлСтрок = Excel.Cells(1,1).SpecialCells(11).Row;
        ФайлКолонок = Excel.Cells(1,1).SpecialCells(11).Column;
    Конецесли;
    
    //считываем первую строку и генерируем колонки
    Сч = 1;
    Пока ЗначениеЗаполнено(Excel.Cells(1, Сч).Text) Цикл
        ИмяКолонки = Excel.Cells(1, Сч).Text;
        ИмяБезПробелов = СтрЗаменить(ИмяКолонки," ",""); // убираем из имени колонок пробелы
        ИмяБезПробелов = СтрЗаменить(ИмяБезПробелов,"-",""); // убираем из имени колонок пробелы
    
        
        Позиция = Найти(ИмяБезПробелов,"Город");
        Если Позиция >0 Тогда
             ИмяБезПробелов = "Город";
        КонецЕсли;    
                
        Таблица.Колонки.Добавить(ИмяБезПробелов,,ИмяКолонки);
        НоваяКолонка = ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов, ИмяКолонки);
        НоваяКолонка.Данные = ИмяБезПробелов;
        Сч = Сч + 1;
    КонецЦикла;
    
    
    //После формирования колонок считываем тело файла эксель и построчно заносим данные в табличное поле:
    Для НС = 2 по ФайлСтрок Цикл // НС указываем с какой строки начинать обработку
        Состояние("Файл "+Строка(ИмяФайла)+": Обрабатывается первый лист "+Строка(Формат(?(ФайлСтрок=0,0,((100*НС)/ФайлСтрок)),"ЧЦ=3; ЧДЦ=0"))+" %");
        ОбработкаПрерыванияПользователя(); //указав данный оператор, цикл можно прервать в любой момент нажатие ctrl+break
        НоваяСтрока = Таблица.Добавить();
        Для НомерКолонки = 1 по Таблица.Колонки.Количество() Цикл //заполняем строку значениями
            ТекущееЗначение = Excel.Cells(НС, НомерКолонки).Text;
            ИмяКолонки = Таблица.Колонки[НомерКолонки-1].Имя;
            НоваяСтрока[ИмяКолонки] = ТекущееЗначение;
        КонецЦикла;
    КонецЦикла;    
    
    // Закрытие книги
    Excel.DisplayAlerts = 0;
    Excel.Quit();
    Excel.DisplayAlerts = 1;
6 SkillUp
 
11.04.19
09:45
Ищу из-за чего?
7 SkillUp
 
11.04.19
09:45
(4) АААА!!! ВСе, понял. СПАИБО!!!
2 + 2 = 3.9999999999999999999999999999999...