gifts2017

Еще один, "велосипедный", способ загрузки данных из Excel

Опубликовал Ловыгин Антон (wunderland) в раздел Обмен - Загрузка и выгрузка в Excel

Как загрузить данные из Excel в 1С 8.2 наиболее простым способом? Правильно!!! Попросить кого-то сделать всю грязную работу! И в моем случае это 1С 8.3 - да, да ... Вот такой вот велосипед (на костылях).

Была поставлена задача - автоматизировать загрузку данных из Excel. Использование платформы 1С 8.2 было одним из условий. Перепробовал разные способы, из на Инфостарте много, от классического Excel.Application до внешних компонент. Но каждый способ показывал в процессе эксплуатации какие-то минусы. Вот и родилась идея воспользоваться возможностями платформы 8.3, чтобы преобразовать исходный файл *.xls(*.xlsx) в *.mxl, а потом обрабатывать его как "родной". В обработке к публикации пример преобразования от исходного файла, до открытия в 1С табличного документа. Последовательность действий работы следующая:

  1. По COM подключаемся из 8.2 к 8.3;
  2. Из 8.3 открываем файл Excel-ем;
  3. Каждый лист Excel сохраняем в отдельный временный файл;
  4. Читаем этот временный файл в ТабличныйДокумент 1С 8.3 и сохраняем в файл формата mxl;
  5. Читаем файл mxl в ТабличныйДокумент 1С 8.2 и показываем пользователю (или дальнейшая обработка);

Получилось очень даже прилично. И скорость нормальная, и "минусов", которые раньше мешали, пока нет. Не Бог весть что, но, может, кому пригодится.

Я сделал файл-пример, в котором 3 листа, на которых заполнено разное кол-во колонок, и они разной ширины. На картинках показано, как файл с примером будет выглядеть, если его просто открыть в 1С 8.3 и как тот же файл будет открыт обработкой, НО ... на 8.2 :)

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
ЧтениеЭксельЧерез1С83.epf
.epf 7,18Kb
28.07.16
6
.epf 7,18Kb 6 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Андрей (Krasnyj) 04.08.16 13:58
Плюс за идею, но вот как будет с практической применимостью? :)
2. Виктор Назаров (androgin) 04.08.16 17:40
не проще ли обновить платформу?
3. Геннадий Жаркой (ifal) 04.08.16 18:04
А вот так пробовали? Проще некуда.
				
Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ПолноеИмя);
ExcelЛист = Excel.Sheets(НомерЛиста);
ТаблицаМассивов = ExcelЛист.UsedRange.Value.Выгрузить();
Excel.WorkBooks.Close();
...Показать Скрыть

ТаблицаМассивов - тут весь ваш лист. Так, на мой взгляд, проще и быстрей. Для вашей задачи осталось добавить перебор листов и готово.
Award; BigB; v3rter; necropunk; wunderland; PowerBoy; myr4ik07; ZOMI; +8 Ответить 2
4. Ловыгин Антон (wunderland) 05.08.16 09:38
(2) :( Пока нет возможности
5. Ловыгин Антон (wunderland) 05.08.16 09:39
(3) Обязательно попробую. Спасибо.
6. Ловыгин Антон (wunderland) 05.08.16 09:42
(1) Пока отлично работает. Тьфу-тьфу.
7. Антонио (Fragster) 05.08.16 10:54
Я поступал проще и заставлял пользователя делать контрол це - контрол вэ в таб. документ на форме, когда совсем лень было. + шапку нужную для распознавания можно без сохранения файла сделать
8. Ловыгин Антон (wunderland) 05.08.16 11:34
(3) Прикольная штука, но вот "косяк" который она не ловит http://prntscr.com/c1vg9m
Значение в поле "Штрихкод" начинается с "00" и сделали это через формат ячейки.
И данным методом эти нули я не получаю ( здесь можно долго рассуждать - но мы не будем), а мне они нужны.
Но за метод все равно большое спасибо.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа