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

lira89

Well-known member
12.03.2010
154
0
#1
Здравствуйте. вот возникла такая проблема (1с 77). Есть книга Excel со множеством листов. Надо считать все данные с каждого листа. Мой отрывок кода приведен ниже:
Код:
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");
Проблема возникла в том, что в переменную Стр попадают значения только из первого листа. а сам цикл построен и работает правильно(проверяла через отладчик :) ). Вот приведен код функции, которая присваивается переменной Стр:
Код:
Функция ПолучитьЗначение(Excel,у,х)
Cell=Excel.Cells(у, х);
Возврат Cell.Value;
КонецФункции
Извиняюсь за многословие, но очень нужна помощь в данном вопросе. Заранее спасибо.
 

hosm

* so what *
18.05.2009
2 442
6
#2
при взятии значения можно указать с какого листа брать данные. синтаксис 1с не знаю, но в экселе есть обращения что-то типа Лист1!A1, т.е. что-то написать типа Книга1.WorkSheets(j).Cells(у, х). Если лист не указан, берет с текущего листа - видать, у вас это первый.
 

gorlanovmax

Well-known member
19.06.2008
286
0
#3
У Вас Стр=СокрЛП(Строка(ПолучитьЗначение(Эксель1,i,1)));

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

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

lira89

Well-known member
12.03.2010
154
0
#4
Спасибо огромное за советы. Все начало работать как надо)