Сюда объеденяю разные методы работы с табличным редактором Excel.
Чтение и использование мтода "Область.Value.Выгрузить()"
Чтение и использование мтода "Область.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 Цикл ТЗ.ЗагрузитьКолонку(МассивДанныхКолонок[Счетчик], Счетчик) КонецЦикла;
//ОбработатьДанныеТабличногоДокументаНаСервере(ТЗ); здесь уже передается таблица значений дальше для обработки
КонецПроцедуры
Функция ПрочитатьТабличныйДокументИз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 Цикл ТЗ.ЗагрузитьКолонку(МассивДанныхКолонок[Счетчик], Счетчик) КонецЦикла;
//ОбработатьДанныеТабличногоДокументаНаСервере(ТЗ); здесь уже передается таблица значений дальше для обработки
КонецПроцедуры
Комментариев нет:
Отправить комментарий