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

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

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

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

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