Загрузка из Excel (без использования com-объектов, без установленного Excel)

Публикация № 1025900

Обработки - Обработка документов

Загрузка из Excel без com чтение обработка ТабличныйДокумент Прочитать() Эксель

43
Обработка не использует com-объект для чтения из файла, не нужен установленный Excel.

Ранее для чтения Excel часто использовали:

Новый COMОбъект("Excel.Application");

Для его использования должен был быть установлен Excel.

В этой обработке для чтения используется встроенный платформенный метод: ТабличныйДокумент.Прочитать()

Это позволяет читать файлы без дополнительных программ и компонент.
Также в обработке написан разбор считываемых данных и преобразование их в таблицу значений для дальнейшей обработки.
Работает в толстом, тонком и веб-клиентах, как в файловом, так и в клиент-серверном варианте. Может работать с файлом как с одним листом, так и с несколькими.

 

Тестировалось на платформе 8.3.12.1790.

43

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

Наименование Файл Версия Размер
Загрузка из Excel (без использования com-объектов, без установленного Excel):
.epf 8,38Kb
22.03.19
60
.epf 8,38Kb 60 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. DJDUH 17 22.03.19 17:26 Сейчас в теме
Ну крутяк конечно же, а теперь попробуй открыть книгу с тремя листами и на каждом скопируй свою таблицу.
rpgshnik; Смешной 1С; +2 Ответить
2. Смешной 1С 283 22.03.19 18:43 Сейчас в теме
(1) Спасибо за замечание. Действительно, работало некорректно, выводило все в одну Таблицу.
Поправил, теперь можно работать как с несколькими листами, так и с одним, обработку и скриншоты обновил.
user1179850; +1 Ответить
3. neuro88 22.03.19 18:46 Сейчас в теме
(1) на каждый лист будет создана новая область. так что использовать можно.
4. ifal 286 22.03.19 19:32 Сейчас в теме
Так это уже как пару лет, если не ошибаюсь.
check2; Serj1C; SerVer1C; akor77; +4 Ответить
5. Смешной 1С 283 22.03.19 19:38 Сейчас в теме
(4) Да, это появилось в платформе 8.3.12.
7. Смешной 1С 283 22.03.19 19:47 Сейчас в теме
(6) Да, с платформы 8.3.10 можно считывать отдельные листы файла EXCEL.
Но многие до сих почему-то через COM читают.
8. ifal 286 22.03.19 19:48 Сейчас в теме
(7) не всегда корректно 1с считывает, особенно если с openoffice сохраняли.
21. starik-2005 1864 25.03.19 09:38 Сейчас в теме
(5) с 8.3.12 можно записывать экс5ль в несколько листов - я об этом писал как-то: https://infostart.ru/public/979007/
9. AlexeyPapanov 23.03.19 21:17 Сейчас в теме
Существенное неудобство такого метода в том, что он доступен только в толстом клиенте.
10. Смешной 1С 283 24.03.19 07:15 Сейчас в теме
(9) В тонком и веб-клиенте также отлично работает
Прикрепленные файлы:
11. Смешной 1С 283 24.03.19 07:26 Сейчас в теме
(10) Веб клиент
Прикрепленные файлы:
12. AlexeyPapanov 24.03.19 10:18 Сейчас в теме
(11) Ничего не понимаю.
Может мы о разных вещах говорим?

Открываю СП по методу ТабличныйДокумент.Прочитать() и вижу
Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).


Я скачаю Вашу обработку и проверю.
13. AlexeyPapanov 24.03.19 10:21 Сейчас в теме
(12) Все, увидел. Вы файл на сервере читаете.
14. Смешной 1С 283 24.03.19 12:05 Сейчас в теме
(13) да, это и логично. Такие задачи как раз и должны на сервере выполняться.
15. AlexeyPapanov 24.03.19 12:21 Сейчас в теме
(14) Чтение файла с клиентской машины? Наоборот, там где можно сделать на клиенте, так и надо делать. А Вам приходится гонять файл с клиента на сервер. На одном компе разницы юзер не ощутит, но концепция работы с УФ подразумевает другой подход как мне кажется.
16. Смешной 1С 283 24.03.19 14:40 Сейчас в теме
(15) Возможно зависит от конкретной задачи. У меня при загрузке из файла чаще встречается задача, когда эти данные нужно обработать и сохранить в базе. И в таком случае данные так или иначе придется нести на сервер. Поэтому я и написал, что логично сразу файл на сервер забрать и там с ним работать и с данными.
18. AlexeyPapanov 24.03.19 14:48 Сейчас в теме
(16) передача файла на сервер в Вашем случае вынужденная, а не необходимая.
постобработка данных конечно будет на сервере - ежу понятно.
в любом случае, этот вариант имеет место быть. не у всех, к примеру, есть Excel.
17. acanta 56 24.03.19 14:44 Сейчас в теме
А если файл екселе открыт, редактируется одновременно несколькими пользователями запаролен и защищен от редактирования в нескольких местах, тогда как?
19. Смешной 1С 283 24.03.19 14:56 Сейчас в теме
(17) Не приходилось иметь дело с такими условиями, нужно эксперементировать
petrgrebenyk; acanta; +2 Ответить
20. TreeDogNight 15 25.03.19 07:44 Сейчас в теме
В случае открытия файлов размеров более 30мб с использованием этого метода велика вероятность вылета клиента. Я делал одну обработку, основанную на этом методе, и там заметил такое поведение платформы.
22. logarifm 1042 25.03.19 10:26 Сейчас в теме
(20)64 -битными клиентами для больших фалов надо пользоваться!
24. starik-2005 1864 25.03.19 18:31 Сейчас в теме
(22) не надо пользоваться 1С для больших файлов вообще - он для этого не предназначен )))
23. nikita0832 175 25.03.19 16:24 Сейчас в теме
Также в обработке написан разбор считываемых данных и преобразование их в таблицу значений для дальнейшей обработки.

- это же через построитель запроса делается? Там хорошо что таблица сразу типизированная, можно её в запрос. Но сложные 2 и более этажные шапки не читаются. я обходил такой косяк дописывая заголовки на основании заголовков выше и урезая область чтения сверху (реализовано тут). Ну и редактор запроса и кода с сохранением этого в файлы .q1c тоже в наличии. Еще у экселя часто косяк с типами бывает, не всегда точно можно сказать какой тип в колонке прочитается, к счастью в консоли типы колонок на лету меняются. И есть неисправимый косяк с типами дата - когда указано время без даты меньше чем 01:36, при этом тип - дата, даты определяются косячно, поэтому время без даты лучше читать как строку.
25. v25i85 29.03.19 23:31 Сейчас в теме
чёт все забыли, что кроме эксель есть и txt - более компактное решение для переноса данных.
26. starik-2005 1864 30.03.19 23:19 Сейчас в теме
(25)
чёт все забыли, что кроме эксель есть и txt - более компактное решение для переноса данных.
С учетом того, что последний Эксель - это запакованный XML, то что-то как-то утверждение мне, лично, кажется слабоватым. А для компактности вообще есть HTTP-сервисы - там хоть в protobuf можно данные передавать - уж куда компактнее (хотя тоже не молодое решение - еще в паскале были типизированные файлы, куда можно было гнать поток типа RECORD - как раз бинарник с описанными в типе данными).
Оставьте свое сообщение