gifts2017

Бесплатная native-компонента для прямого чтения XLS файлов для 1С8.2

Опубликовал UncleVader (UncleVader) в раздел Программирование - Внешние компоненты

Все просто - загрузка через OLE мне показалась долгой, существующие компоненты прямого чтения оказались платными, пришлось по-быстрому написать свою.
Для скачивания выложена обработка чтения и визуализации xls-файлов с зашитой в ее макет компонентой, реализованной по технологии native-api. Работа проверялась под толстым и тонким клиентом.

Методы:

  1. ОткрытьФайл(ИмяФайла) - Возвращает к-во листов, если 0, значит файл не открыт
  2. ТекущийЛист(НомерЛиста) - Устанавливает текущий лист открытой книги и возвращает к-во колонок
  3. ЗначениеЯчейки(НомерСтроки,НомерСтолбца) - Возвращает строковое значение ячейки текущего листа


Свойства:

  1. ИмяЛиста - Возвращает имя текущего листа
  2. КоличествоКолонок - Возвращает количество колонок текущего листа
  3. КоличествоСтрок - Возвращает количество строк текущего листа


Недостатки:

  1. Не читает xlsx-файлы
  2. Работает только под Windows

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

Наименование Файл Версия Размер Кол. Скачив.
Обработка с ВК
.epf 155,38Kb
21.01.13
96
.epf 155,38Kb 96 Скачать

См. также

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

Комментарии

1. andrewks 21.01.13 22:24
чем не устроили adodb и Yoksel?
2. UncleVader (UncleVader) 21.01.13 23:11
(1) ADODB Для простых случаев - пушкой по воробъям, а Yoksel для 8-ки не докурил, как-то не понял с наскока что в нем к чему. Честно говоря, на всю затею я потратил меньше часа, так что в этом случае считаю цель оправдала средства.
3. Misha ⁠ (Magister) 22.01.13 03:18
Озвучьте поддерживаемые форматы (версии Excel).
Также интересует, есть ли 64-разрядная компонента?
4. andrewks 22.01.13 08:16
(2) UncleVader,
ADODB Для простых случаев - пушкой по воробъям
хотелось бы услышать обоснование. тем более, что механизм поддерживает запросы.

судя по времени, использовали какую-то готовую библиотеку, типа FPSpreadsheet для FPC?
5. andrewks 22.01.13 08:20
вот если бы для Linux запилили, это был бы жирнющий плюс :-)
6. Андрей Акулов (DrAku1a) 22.01.13 10:08
Miracle Native на ИС поищите - она и не такое умеет... и бесплатная!
7. UncleVader (UncleVader) 22.01.13 11:07
(3) При создании ВК использовал библиотеку TXLSFile для Delphi, которая по заверению автора поддерживает формат MS Excel 97, 2000, XP, 2003. На Win64 пробовал - работает.
(4) насчет сложности применения ADODB - из тех готовых обработок что тут нашлись (все не проверял) ни одна не смогла открыть мой файл не смотря на то что он небольшой по объему, но плохо структурированный. Кроме того, читал описание - есть некоторые ограничения, в частности есть проблемы при чтении где в колонках есть разноформатные данные, подробности тут.
Хотя для чтения больших объемов данных (прайс-листы например) скорее всего буду применять эту технологию.
(5) Никогда не разрабатывал под Linux (к сожалению), поэтому врядли дойдут руки до этого, хотя кто знает...
(6) Пробовал отсюда, она триальная и больше 10 строк не захотела прочитать, именно после нее и решился на свое.
8. andrewks 22.01.13 11:15
(7) UncleVader,
Никогда не разрабатывал под Linux (к сожалению), поэтому врядли дойдут руки до этого, хотя кто знает...
если, таки, дойдут руки, то вроде неплохой модуль: http://wiki.freepascal.org/FPSpreadsheet для лазарус
9. Misha ⁠ (Magister) 22.01.13 15:46
(8) Как раз недавно его смотрел, собственно потому и про форматы вопрос задал.
Попался мне тут недавно файл формата Excel 2.x.... она его как раз умеет читать :)
Даже подумал написать ВК, а тут эта разработка. Только вот формат нужный, похоже, не умеет :(
10. UncleVader (UncleVader) 22.01.13 23:58
(8) спасибо, к лазарусу давно присматриваюсь, надеюсь наступит тот день
(9) так что, удалось прочитать Excel 2.0?
11. Андрей Овсянкин (Evil Beaver) 24.01.13 09:58
Чем читаете файл? Неужели собственноручно байтики ковыряете? Тогда где доки брали?
12. UncleVader (UncleVader) 24.01.13 11:51
(11) в (7) же писал:
При создании ВК использовал библиотеку TXLSFile для Delphi, которая по заверению автора поддерживает формат MS Excel 97, 2000, XP, 2003. На Win64 пробовал - работает.

(8) Нашел виртуалку с Линуксом и с установленным Лазарусом, даже скомпилил библиотеку .so, но подключить ее в контексте 1С сервера под 64x Убунтой не удалось и как диагностировать пока не представляю...
13. Андрей Овсянкин (Evil Beaver) 24.01.13 12:02
(12) UncleVader, Каюсь, не заметил.
14. Яков Коган (Yashazz) 24.01.13 12:30
Невозможность читать xlsx - это жирный недостаток по нонешним временам. ADO рулит!
15. UncleVader (UncleVader) 24.01.13 12:47
(14) добавить не проблема, просто мне не критично...
16. Misha ⁠ (Magister) 27.01.13 19:40
(0) Погуглил чуток про TXLSFile... а он ведь платный. Бесплатная версия есть, но работает только при запущенной Delphi.
Автор, вы его покупали? Если да - то интересно, в чем смысл компоненту распространять бесплатно.
Ну а если нет... тут и так всё понятно.
17. UncleVader (UncleVader) 28.01.13 10:55
(16) Magister, Нет, не покупал, нашел в хламнике. Интересно, а почему вам интересно?
Выложил бесплатно чтобы помочь тем кто ищет, потому как сам нуждался в такой.
Ну а чтобы совсем совесть успокоить планирую переписать под Lazarus с применением вышеуказанной библиотеки.
18. Misha ⁠ (Magister) 28.01.13 13:14
(17) Как раз с точки зрения совести интересно. Ну и можно ли использовать для себя. Получается, что нет.

P.S. http://infostart.ru/public/170940/
19. UncleVader (UncleVader) 28.01.13 14:15
(18) Ну вот, теперь мне лень не одолеть, разве что реализовать поддержку xlsx, распарсив его как xml например как учат тут
20. Андрей (andru_dv) 29.01.13 22:35
На своём примере убедился как полезна в работе схожая компонента для 7.7 А теперь ещё и для восьмерки появилась!
Ещё польза в том что в организациях не всегда установлен Эксель на сервере. Через оле в таких случаях не прочитать xls файл и тут как раз выручают такие компоненты. Большое спасибо за труд. Плюсую!
21. Владимир Уткин (fxfan) 14.02.13 10:53
Спасибо!
Все сразу заработало и очень помогло - на сервере нет Экселя.
Да и интерфейс проще, чем к Экселю.
22. L M (lm-alex) 07.10.14 14:11
{ВнешняяОбработка.ПросмотрXLSПрямымДоступом.МодульОбъекта(14)}: Ошибка при вызове метода контекста (ПоместитьВоВременноеХранилище)
АдресХранилищаНаСервере = ПоместитьВоВременноеХранилище(Таблица, Новый УникальныйИдентификатор);
по причине:
Переданное значение не может быть помещено во временное хранилище
23. UncleVader (UncleVader) 07.10.14 14:45
подозреваю что клиент-сервер, я видел ошибки в таком варианте, надо переделывать, да руки не доходят
24. Руслан Хабибрахманов (116hrus) 24.12.14 16:08
(23), у меня точно файловая версия, но выдает такую же ошибку как и в (22)
25. UncleVader (UncleVader) 24.12.14 19:34
Проверялось только в толстом клиенте, возможно причина в этом.
Кстати я ушел сам от этого варианта, прайсы гружу из csv-файла.
Намного быстрее чем OLE и универсально.
Могу поделиться наработкой :)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа