Имя: Пароль:
1C
1С v8
Как загрузить все листы из экселя в 1С
0 lirt82
 
26.05.17
09:29
код обработки по загрузке ниже.
в файле несколько листов, как загрузить все?
Процедура ПрочитатьНажатие(Элемент)
    
    //очищаем таблицу и удаляем колонки
    Таблица.Очистить();
    Таблица.Колонки.Очистить();
    ЭлементыФормы.Таблица.Колонки.Очистить();
        
    //подключаемся к эксел
    Попытка
        Excel = Новый COMОбъект("Excel.Application");
        Excel.WorkBooks.Open(ИмяФайла);
        Состояние("Обработка файла Microsoft Excel...");
    Исключение
        Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!");
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    
    Попытка
        //Открываем необходимый лист
        Excel.Sheets(1).Select();  // лист 1, по умолчанию  
    Исключение
        Excel.ActiveWorkbook.Close();
        Excel.Quit();
        Excel = Неопределено;
        //Excel = 0;
        Сообщить("Файл "+Строка(ИмяФайла)+" не соответствует необходимому формату! Первый лист не найден!");
        ОтменитьТранзакцию();
        Возврат;
    КонецПопытки;    
    
    //Получим количество строк и колонок.
    //В разных версиях 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;
        ИмяБезПробелов = СтрЗаменить(ИмяКолонки," ",""); // убираем из имени колонок пробелы
        Таблица.Колонки.Добавить(ИмяБезПробелов,,ИмяКолонки);         
        НоваяКолонка = ЭлементыФормы.Таблица.Колонки.Добавить(ИмяБезПробелов, ИмяКолонки);
        НоваяКолонка.Данные = ИмяБезПробелов;
        Сч = Сч + 1;
    КонецЦикла;
    
    Для НС = 2 по ФайлСтрок Цикл  // НС указываем с какой строки начинать обработку        
        
        Состояние("Файл "+Строка(ИмяФайла)+": Обрабатываем файл "+Строка(Формат(?(ФайлСтрок=0,0,((100*НС)/ФайлСтрок)),"ЧЦ=3; ЧДЦ=0"))+" %");
        
        ОбработкаПрерыванияПользователя(); //указав данный оператор, цикл можно прервать в любой момент нажатие ctrl+break
        
        НоваяСтрока = Таблица.Добавить();        
        
        Для НомерКолонки = 1 по Таблица.Колонки.Количество() Цикл
            //заполняем строку значениями
            ТекущееЗначение = Excel.Cells(НС, НомерКолонки).Text;
            ИмяКолонки = Таблица.Колонки[НомерКолонки-1].Имя;             
            НоваяСтрока[ИмяКолонки] = ТекущееЗначение;            
        КонецЦикла;
        
    КонецЦикла;  
    //Закрываем Excel
    Excel.Quit();
    Excel = Неопределено;
1 cw014
 
26.05.17
09:31
Попытка
        //Открываем необходимый лист

        Excel.Sheets(1).Select();  // лист 1, по умолчанию  

    Исключение



У тебя же все есть
2 cw014
 
26.05.17
09:32
Или тебе рассказать, как работают циклы, и как пользоваться MSDN?
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший