считывание данных из Excel

Тема в разделе "1C и всё что с ней связано", создана пользователем lira89, 8 июл 2010.

  1. lira89

    lira89 Well-Known Member

    Регистрация:
    12 мар 2010
    Сообщения:
    159
    Симпатии:
    0
    Здравствуйте. вот возникла такая проблема (1с 77). Есть книга Excel со множеством листов. Надо считать все данные с каждого листа. Мой отрывок кода приведен ниже:
    Код (Text):
    j=0;
    КоличествоЛистов = Книга1.Sheets.Count;
    Для j=1 по КоличествоЛистов Цикл
    Лист1 = Книга1.WorkSheets(j);
    ИмяЛиста = Книга1.WorkSheets(j).Name;
    i=2; //со 2 строки начинаются данные в документе Microsoft Excel
    Сообщить("Идет загрузка файла в справочник","i");
    Стр=СокрЛП(Строка(ПолучитьЗначение(Эксель1,i,1)));
    Пока ПустаяСтрока(Стр)=0 Цикл //пока непустые ячейки в строках — загружаем
    Стр=СокрЛП(Строка(ПолучитьЗначение(Эксель1,i,1)));
    Если ПустаяСтрока(Стр)=0 Тогда
    .......
    Иначе 
    Сообщить("Загрузка листа"""+ИмяЛиста+""" IPK.xls закончена.","i");
    Прервать;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    Сообщить("Загрузка файла закончена.","i");
    Проблема возникла в том, что в переменную Стр попадают значения только из первого листа. а сам цикл построен и работает правильно(проверяла через отладчик :) ). Вот приведен код функции, которая присваивается переменной Стр:
    Код (Text):
    Функция ПолучитьЗначение(Excel,у,х)
    Cell=Excel.Cells(у, х);
    Возврат Cell.Value;
    КонецФункции
    Извиняюсь за многословие, но очень нужна помощь в данном вопросе. Заранее спасибо.
     
  2. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    при взятии значения можно указать с какого листа брать данные. синтаксис 1с не знаю, но в экселе есть обращения что-то типа Лист1!A1, т.е. что-то написать типа Книга1.WorkSheets(j).Cells(у, х). Если лист не указан, берет с текущего листа - видать, у вас это первый.
     
  3. gorlanovmax

    gorlanovmax Well-Known Member
    1C Team

    Регистрация:
    19 июн 2008
    Сообщения:
    286
    Симпатии:
    0
    У Вас Стр=СокрЛП(Строка(ПолучитьЗначение(Эксель1,i,1)));

    Должно быть Стр=СокрЛП(Строка(ПолучитьЗначение(Лист1,i,1)));

    Добавлено: И зачем тогда вообще была ведена переменная Лист1, если она нигде у Вас не используется
     
  4. lira89

    lira89 Well-Known Member

    Регистрация:
    12 мар 2010
    Сообщения:
    159
    Симпатии:
    0
    Спасибо огромное за советы. Все начало работать как надо)
     
Загрузка...

Поделиться этой страницей