вторник, 5 июля 2016 г.

Работа с Excel

Сюда объеденяю разные методы работы с табличным редактором Excel.

Чтение и использование мтода "Область.Value.Выгрузить()"

&НаКлиенте
Функция ПрочитатьТабличныйДокументИзExcel()

   
xlLastCell      = 11;
   
НомерЛистаExcel = НомерЛиста;

   
ВыбФайл = Новый Файл(ИмяФайла);
    Если НЕ
ВыбФайл.Существует() Тогда
       
Сообщить("Файл не существует!");
        Возврат Ложь;
    КонецЕсли;

    Попытка
       
Excel = Новый COMОбъект("Excel.Application");
       
Excel.WorkBooks.Open(ИмяФайла);
       
ExcelЛист = Excel.Sheets(НомерЛистаExcel);
    Исключение
       
Сообщить("Ошибка. Возможно неверно указан номер листа книги Excel.");
        Возврат ложь;

    КонецПопытки;

   
ActiveCell = Excel.ActiveCell.SpecialCells(xlLastCell);
   
ВсегоСтрок = ActiveCell.Row;
   
ВсегоКолонок = ActiveCell.Column;

    Если
НачальнаяСтрока > ВсегоСтрок Тогда Возврат Ложь КонецЕсли;

   
Область = ExcelЛист.Range(ExcelЛист.Cells(НачальнаяСтрока, 1), ExcelЛист.Cells(ВсегоСтрок, ВсегоКолонок));
   
МассивДанныхКолонок = Область.Value.Выгрузить();

   
ЗаполнитьТабличныйДокументИзМассива(МассивДанныхКолонок, ВсегоСтрок-НачальнаяСтрока +1, ВсегоКолонок);

   
Excel.WorkBooks.Close();
   
Excel.Quit();
   
Excel = 0;

    Возврат Истина;

КонецФункции
// ()

&НаСервере
Процедура ЗаполнитьТабличныйДокументИзМассива(МассивДанныхКолонок, ВсегоСтрок, ВсегоКолонок)

   
Колонки = Новый Соответствие();
   
Колонки.Вставить(НомерКолонкиКодПоставщика, "КодПоставщика");   Колонки.Вставить(НомерКолонкиМодель,            "Модель");          Колонки.Вставить(НомерКолонкиВидОдежды,         "ВидОдежды");
   
Колонки.Вставить(НомерКолонкиНаименование"Наименование");    Колонки.Вставить(НомерКолонкиЦвет,              "Цвет");            Колонки.Вставить(НомерКолонкиСтавкаНДС,         "СтавкаНДС");
   
Колонки.Вставить(НомерКолонкиАртикул,       "Артикул");         Колонки.Вставить(НомерКолонкиПол,               "Пол");             Колонки.Вставить(НомерКолонкиКоличество,        "Количество");
   
Колонки.Вставить(НомерКолонкиСтрана,        "Страна");          Колонки.Вставить(НомерКолонкиРазмер,            "Размер");          Колонки.Вставить(НомерКолонкиЦенаСНДС,          "ЦенаСНДС");
   
Колонки.Вставить(НомерКолонкиПроизводитель, "Производитель");   Колонки.Вставить(НомерКолонкиРост,              "Рост");            Колонки.Вставить(НомерКолонкиРозничнаяЦенаСНДС, "РозничнаяЦенаСНДС");
   
Колонки.Вставить(НомерКолонкиМаркаБренд,    "МаркаБренд");      Колонки.Вставить(НомерКолонкиСоставМатериала,   "СоставМатериала");

   
ТЗ = Новый ТаблицаЗначений;
    Для
Счетчик = 1 По ВсегоКолонок Цикл

       
ИмяКолонки = Колонки.Получить(Счетчик);
        Если
ИмяКолонки = Неопределено Тогда
           
ТЗ.Колонки.Добавить("Колонка"+Счетчик, Новый ОписаниеТипов("Строка"));
            Продолжить;
        КонецЕсли;

       
ТЗ.Колонки.Добавить(ИмяКолонки, Новый ОписаниеТипов("Строка"));

    КонецЦикла;

    Для
Счетчик = 1 По ВсегоСтрок Цикл НоваяСтрока = ТЗ.Добавить() КонецЦикла;

    Для
Счетчик = 0 По ВсегоКолонок-1 Цикл ТЗ.ЗагрузитьКолонку(МассивДанныхКолонок[Счетчик], Счетчик) КонецЦикла;

   
//ОбработатьДанныеТабличногоДокументаНаСервере(ТЗ); здесь уже передается таблица значений дальше для обработки

КонецПроцедуры


Комментариев нет:

Отправить комментарий