Универсальное средство чтения файлов Excel

16.05.19

Интеграция - Загрузка и выгрузка в Excel

Унифицируем чтение файлов Excel, читаем "неудобные" файлы, переносим содержимое таблиц Excel через буфер обмена.

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

Наименование Файл Версия Размер
Шаблон внешней обработки (полностью автономна и работоспособна на пустой конфигурации)
.epf 30,61Kb
31
.epf 2019-05-15 30,61Kb 31 Скачать
Файл конфигурации со справочником и необходимыми процедурами 2.0 (Устаревшая версия для встраивания в конфигурацию, нет поддержки ADO)
.cf 37,22Kb
22
.cf 2.0 37,22Kb 22 Скачать

Думаю, что многим приходилось сталкиваться с такой задачей как загрузка данных из файлов Excel. Очень редко бывает так, что пользователи строго придерживаются размещения данных в определенных столбцах, поэтому процесс написания загрузки превращается в очень "увлекательное" мероприятие. По этой причине, занимаясь такой загрузкой в 3-4 раз многие программисты начинают задумываться – как решить эту проблему раз и навсегда. Представленное ниже решение проблемы с успехом используется на нашем предприятии и в течении года постоянно дорабатывалось и модернизировалось. Сначала была обработка для толстого клиента, после некоторые доработки в направлении повышения производительности. После несколько модернизировали под работу с тонким клиентом и прикрутили процедуры для работы с буфером обмена, которые одновременно позволяют обрабатывать текстовые документы с символами-разделителями колонок.

Первоначальная обработка с процедурами по работе с буфером представлена здесь:

//infostart.ru/public/166350/

Данное решение позволяет читать в таблицу значений файлы Excel, а так же текстовые данные с символами-разделителями полей, согласно настройкам, хранимым в специальном справочнике. Файл конфигурации содержит сам справочник и необходимые для чтения процедуры. Работа возможна как в тонком, так и в толстом клиенте, при этом справочник использует одни и те же управляемая формы. При загрузке данных необходимо соблюдать одно условие - Заголовки столбцов в Excel должны оставаться постоянными. При обработке разношерстных файлов от разных пользователей иногда приходится эти самые заголовки расставлять самостоятельно, но на этом предобработка файла заканчивается. Что дальше делать с полученной таблицей – решать Вам.

Чтение файлов Excel осуществляется через COM-объект, при этом возможно задание фильтров, позволяющих отбирать только записи с определенным значением в ячейках.

Важно: Для нормальной работы в режиме обычного приложения в свойствах конфигурации должен быть включен флаг "Использовать управляемые формы в обычном приложении". В противном случае требуется создание обычных форм с принудительным перевызовом на основные – управляемые.


 

Описание реквизитов справочника:

Каталог, МаскаФайла — позволяет задать каталог и маску для поиска файлов для возможности использования при автоматической загрузке. Если таковая использоваться не будет, заполнять не обязательно.

ДопустимыйРазрыв — обязательный к заполнению реквизит. Задает количество пустых строк в файле при достижении которого обработка прерывает чтение, считая, что дальше полезных данных нет. Меньшие значения позволяют читать быстрее, большие – дают возможность чтения файлов низкого качества. Правильный выбор параметра существенно повышает удобство работы. Кто-то спросит - зачем он вообще нужен. Отвечаю - пару раз попадались файлы с несколькими тысячами пустых строк после полезных данных, поэтому просто по последней ячейке листа сие чудо читалось очень и очень долго, а данный параметр позволил заранее отсечь лишнее и в несколько раз повысить скорость прочтения таких образцов.

СлеваНаправо — установка флага позволяет читать данные файлов, расположенные не "вниз", а "вбок".
Внимание: Для текстовых файлов и буфера обмена этот режим не реализован.

Табличная часть – задает соответствие между именем колонки, которое использовано в Excel и именем колонки, которое требуется получить в таблице значений. Помимо этих полей при чтении файла добавляются колонки с именем листа, номером листа и порядковым номером обрабатываемого файла. Параметр Обязательный – позволяет игнорировать при чтении строки (столбцы) с пустыми значениями в отмеченном поле.

Кроме того, форма элемента справочника содержит кнопки, позволяющие проверить чтение данных по текущим настройкам.

 


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

Внимание: Если позиция строки заголовка на листе больше параметра "ДопустимыйРазрыв", то дальнейшая обработка листа не производится.

Для листов, у которых заголовок найти удалось производится считывание данных. при желании могут быть использованы фильтры по значениям. Содержимое ячеек читается как их текстовое представление. Это было сделано намеренно, после некоторых проблем в случае с нашей конфигурацией (преобразование текста к числу при необходимости для нас оказалось более удобным, чем истолкованных Excel как числа текстовых данных в исходное состояние).

 

ДОПОЛНЕНИЯ от 2013-12-24:


Предела совершенству, как правило, нет, поэтому недавно в очередной раз доработал свое средство для прочтения Excel.

Основной функционал не изменился, но дополнился возможностью прикреплять к записям справочника настройки файлы внешних обработок, позволяющие разместить в них код, который позволяет обработать полученную таблицу так, как это нужно Вам.

Чтобы прикрепленный обработчик запустился при соответствующем действии, он должен содержать экспортную процедуру "Обработать" с тремя параметрами. В первый параметр будет передана полученная таблица, во второй - ссылка элемента справочника настройки, по которой прочитана таблица, в третий при вызове обработчика непосредственно из конфигурации можно передавать произвольные параметры. При вызове из формы справочника будет передано "неопределено".

 

В файле обработчика можно использовать параметры авторегистрации:

В экспортной функции ОсновныеПараметры() указываются значения для заполнения шапки справочника настройки

В макете табличного документа под именем "Настройки_Полей" могут быть указаны значения для заполнения табличной части элемента справочника:

Первая колонка соответствует имени колонки получаемой таблицы значений, вторая - заголовку колонки в файле, третья - обязательность заполнения значений в этой колонке (0 или 1)

после заполнения настроек полей из параметров авторегистрации можно дополнять или редактировать их в ручном режиме.

Надеюсь, что Вам эти функции будут полезны. Помимо файла конфигурации прилагаю как пример прикрепленного обработчика простейщую обработку, позволяющую сохранять значения прочитанной таблицы как значения дополнительных свойств справочника "Номенклатура" из типовых конфигураций (в частности УПП). По колонкам "код" и "артикул" (включены в параметры авторегистрации) выполняется поиск элементов справочника. Остальные колонки, которые будут указаны в настройках считаются значениями дополнительных свойств, заголовок колонки в файле должен совпадать с наименованием дополнительного свойства.

Внимание: если в вашей базе таких свойств нет, они будут созданы. Значения в базу будут загружены как элементы классификатора, а не как текстовые данные. Если вам требуется иное поведение, обработку следует поправить под свои нужды.

ДОПОЛНЕНИЯ от 2014-12-17:

Продолжаем улучшать то, что можно улучшить. Довелось опробовать свой подход к обработке Excel-файлов за пределами подвластного мне завода. И выяснились следующие факты:

1. Далеко не всем коллегам нравится наличие в конфигурации дополнительных объектов. Более того, у многих и вовсе используется девственно-чистая типовая конфигурация.
2. Многие пользователи не могут или не хотят (или и то и другое сразу) менять настройки считывания и просто пользуются теми, которые однажды сделал программист. В случае вероятных проблем обращаются к нему же.
3. В отдельных случаях использование Excel-загрузок на постоянной основе не требуется, а выполняется единожды.
4. Случается и потребность в обработке однотипных данных в разных базах с отличающимися, но большей частью схожими конфигурациями. (Иными словами - "походная" обработка)
По этим причинам и создал на основе кода, используемого нами (приведено в прошлой публикации на эту тему), полностью автономную обработку чтения Excel-файлов. Данная обработка фактически является шаблоном для быстрого создания обработок загрузки, заточенных под конкретные задачи и содержит все необходимые процедуры чтения файлов Excel (проверено на пустой конфигурации). Вам остается заняться обработкой полученной таблицы.
Т.к. справочника, хранящего настройки в таковой версии нет, его заменил макет табличного документа "Настройки_Полей"



Здесь в первой колонке указываются заголовки колонок таблицы значений, которая должна быть получена в результате чтения файла.
Во второй - соответствующие им заголовки колонок файла.
В третьей - обязательность заполнения значений в файле (строки с незаполненными значениями этих колонок будут пропускаться). 0 - заполнение значений необязательно, 1 - заполнение значений обязательно.
Кроме того - в первой строке в четвертой колонке - параметр, указывающий предельно допустимое количество пустых строк в файле подряд. Большие значения позволяют считывать данные из файлов низкого качества, меньшие - ускоряют работу.
Первая строка пятая колонка - параметр, управляющий направлением чтения (0 - данные расположены "сверху вниз" 1 - данные расположены "слева направо")

После того как настройки выполнены можно проверять как читаются файлы. Так выглядит наш тестовый Excel-лист:


Открываем обработку, выбираем "Прочитать" и находим нужный файл.


Смотрим что получилось. Именно так будет выглядеть таблица значений, которую нужно обработать. Помимо колонок, которые настроены в макете, автоматически добавляются колонки с числовым идентификатором файла, имя и номер листа книги, с которого получена строка.


Так как конечную обработку данных на все случаи создать просто не возможно, это право автор оставляет Вам. Вызов соответствующей процедуры необходимо встроить в обработку вместо первого "предупреждения"

Дополнения от 20.07.2018

Продолжаем развиваться. Кардинально новый вариант обработки был разработан еще полгода назад, но публике представляю только сейчас. Что же нового?
1.    Ни для кого не секрет, что чтение данных посредством механизма ADO дело более быстрое, поэтому поддержка такового была добавлена в обработку. Основной принцип остался неизменным – для прочтения табличной части сначала разыскиваем строку с нужными заголовками, затем читаем листы. Можно включать использование механизмов ADO и COM-объекта соответствующими флагами. Если выбраны оба, то первоочередным является ADO, а COM-объект используется только, если ADO вызвал ошибку.
2.    Появилась возможность прочесть при необходимости на имеющихся листах параметры шапки по адресам ячеек.
3.    В обработке теперь можно хранить множество макетов с настройками. На форму выведены настройки из выбранного макета. Обработку можно использовать и как внешнюю и для встраивания в конфигурацию, в том числе интеграции данной обработки с формами объектов конфигурации.

 

Обработка Excel Загрузка ADO COM-Объект Универсальная загрузка

См. также

Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка из файлов xls, xlsx, ods, csv, mxl в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

10560 руб.

29.10.2014    209829    620    524    

438

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 11.12.2023, версия 9.5 - 9.9)

13200 руб.

20.11.2015    150385    365    375    

499

Распознавание и загрузка сканов в 1С "одним нажатием": УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.

Загрузка и выгрузка в Excel Документооборот и делопроизводство (СЭД) Учет документов Распознавание документов и образов Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная программа для распознавания ЛЮБЫХ СКАНОВ ИЛИ ФОТО ТОВАРНЫХ ДОКУМЕНТОВ в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML и т.д.) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

5400 руб.

04.06.2019    101136    296    173    

312

Загрузка данных отчета о реализации товаров из Excel файла СберМегаМаркет

Загрузка и выгрузка в Excel Маркетплейсы Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Загрузка данных отчета о реализации товаров из сервиса СберМегаМаркет для конфигурации: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11 и Управление нашей фирмой, редакция 3.0 в документ "Отчет комиссионера (агента) о продажах".

3600 руб.

07.06.2022    14953    78    0    

59

Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы

Загрузка и выгрузка в Excel Оптовая торговля Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 Конфигурации 1cv8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

5000 руб.

09.11.2016    214611    921    886    

938

Универсальная загрузка остатков и цен поставщиков в 1С (УТ 11, КА 2, ERP 2.0) из файлов Excel, CSV, XML (YML и CML)

Прайсы Оптовая торговля Розничная торговля Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Загрузка и выгрузка в Excel Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Обработка позволяет легко настроить загрузку прайс-листов и остатков поставщиков. Форматы файлов задаются для каждого поставщика отдельно. В настройках предусмотрена возможность гибкой обработки входящих данных (убрать лишние символы, пересчитать цены в другую валюту, сделать произвольную наценку и т.д.).

12000 руб.

23.01.2017    58793    59    48    

67
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. maverick76 11 27.03.13 16:27 Сейчас в теме
2. RayCon 784 31.12.13 18:00 Сейчас в теме
Насколько эта обработка гибка при настройке? Например, переварит ли она данные, если они в файле Excel многотабличного вида, при этом таблицы расположены по листу файла как угодно: по нескольку таблиц по вертикали и по горизонтали, разное количество колонок и строк в каждой таблице и т.д. и т.п.
3. Infector 199 31.12.13 19:08 Сейчас в теме
(2) RayCon, Изначально функционал нацелен на извлечение из файла данных, описанных настройками, и сбор в одну сводную таблицу. Из нескольких таблиц, разбросанных бепорядочно по листу, обрабатываться будет первая, соответствующая настройке заголовков. Данные из других таблиц могут так же попасть в нее, если окажутся в соответствующих колонках (т.е. под заголовками первой таблицы) и условие максимального количества пустых строк позволит процедуре чтения до них добраться.

Как правило, своих пользователей приучал обрабатывать такие файлы через копирование нужной таблицы в буфер обмена и нажатие соответствующей кнопки в 1С, хотя такие образцы с трудом вспоминаются. А вот с данными через 10-20 строк были довольно часто.
4. CheBurator 3119 13.03.14 23:30 Сейчас в теме
(2) Николай, ОБМЕН информацией в виде НЕПЛОСКИХ эксельных файлов - очень увлекательное и при этом бесполезное занятие. Максимум что приобретешь - улучшишь скил по навыкам работы в экселе. ВСЕ.
.
активная работа с кучей прайсов, которыми обмениваются всякие "драгдиллеры"-перепродаваны - резюме: никакая обработка не сможет их запихнуть туда куда нам надо. Просто потому что там в однйо ячейке может быть ВСЕ СРАЗУ. и вся работа с таким экселем иначе как вручную с интеллектом человека - невозможна...
.
Основная причина - использование экселя не как электронной ТАБЛИЦЫ - а как большой записной книжки. Причем потрепанной и ведомой неорганизованным человеком.
ivv1970; Cartman; KSy; Infector; +4 Ответить
Оставьте свое сообщение