ОБСУЖДЕНИЕ

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

3 ответов 5,4 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Здравствуйте. вот возникла такая проблема (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;
КонецФункции
Извиняюсь за многословие, но очень нужна помощь в данном вопросе. Заранее спасибо.
 
при взятии значения можно указать с какого листа брать данные. синтаксис 1с не знаю, но в экселе есть обращения что-то типа Лист1!A1, т.е. что-то написать типа Книга1.WorkSheets(j).Cells(у, х). Если лист не указан, берет с текущего листа - видать, у вас это первый.
 
У Вас Стр=СокрЛП(Строка(ПолучитьЗначение(Эксель1,i,1)));

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

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