Все просто — загрузка через OLE мне показалась долгой, существующие компоненты прямого чтения оказались платными, пришлось по-быстрому написать свою.
Для скачивания выложена обработка чтения и визуализации xls-файлов с зашитой в ее макет компонентой, реализованной по технологии native-api. Работа проверялась под толстым и тонким клиентом.
Для скачивания выложена обработка чтения и визуализации xls-файлов с зашитой в ее макет компонентой, реализованной по технологии native-api. Работа проверялась под толстым и тонким клиентом.
Методы:
- ОткрытьФайл(ИмяФайла) — Возвращает к-во листов, если 0, значит файл не открыт
- ТекущийЛист(НомерЛиста) — Устанавливает текущий лист открытой книги и возвращает к-во колонок
- ЗначениеЯчейки(НомерСтроки,НомерСтолбца) — Возвращает строковое значение ячейки текущего листа
Свойства:
- ИмяЛиста — Возвращает имя текущего листа
- КоличествоКолонок — Возвращает количество колонок текущего листа
- КоличествоСтрок — Возвращает количество строк текущего листа
Недостатки:
- Не читает xlsx-файлы
- Работает только под Windows
чем не устроили adodb и Yoksel?
(1) ADODB Для простых случаев — пушкой по воробъям, а Yoksel для 8-ки не докурил, как-то не понял с наскока что в нем к чему. Честно говоря, на всю затею я потратил меньше часа, так что в этом случае считаю цель оправдала средства.
Озвучьте поддерживаемые форматы (версии Excel).
Также интересует, есть ли 64-разрядная компонента?
(2)
хотелось бы услышать обоснование. тем более, что механизм поддерживает запросы.
судя по времени, использовали какую-то готовую библиотеку, типа FPSpreadsheet для FPC?
вот если бы для Linux запилили, это был бы жирнющий плюс 🙂
Miracle Native на ИС поищите — она и не такое умеет… и бесплатная!
(3) При создании ВК использовал библиотеку TXLSFile для Delphi, которая по заверению автора поддерживает формат MS Excel 97, 2000, XP, 2003. На Win64 пробовал — работает.
подробности тут .
отсюда , она триальная и больше 10 строк не захотела прочитать, именно после нее и решился на свое.
(4) насчет сложности применения ADODB — из тех готовых обработок что тут нашлись (все не проверял) ни одна не смогла открыть мой файл не смотря на то что он небольшой по объему, но плохо структурированный. Кроме того, читал описание — есть некоторые ограничения, в частности есть проблемы при чтении где в колонках есть разноформатные данные,
Хотя для чтения больших объемов данных (прайс-листы например) скорее всего буду применять эту технологию.
(5) Никогда не разрабатывал под Linux (к сожалению), поэтому врядли дойдут руки до этого, хотя кто знает…
(6) Пробовал
(7)
если, таки, дойдут руки, то вроде неплохой модуль:http://wiki.freepascal.org/FPSpreadsheet для лазарус
(8) Как раз недавно его смотрел, собственно потому и про форматы вопрос задал.
Попался мне тут недавно файл формата Excel 2.x…. она его как раз умеет читать 🙂
Даже подумал написать ВК, а тут эта разработка. Только вот формат нужный, похоже, не умеет 🙁
(8) спасибо, к лазарусу давно присматриваюсь, надеюсь наступит тот день
(9) так что, удалось прочитать Excel 2.0?
Чем читаете файл? Неужели собственноручно байтики ковыряете? Тогда где доки брали?
(11) в (7) же писал:
(8) Нашел виртуалку с Линуксом и с установленным Лазарусом, даже скомпилил библиотеку .so, но подключить ее в контексте 1С сервера под 64x Убунтой не удалось и как диагностировать пока не представляю…
(12) Каюсь, не заметил.
Невозможность читать xlsx — это жирный недостаток по нонешним временам. ADO рулит!
(14) добавить не проблема, просто мне не критично…
(0) Погуглил чуток про TXLSFile… а он ведь платный. Бесплатная версия есть, но работает только при запущенной Delphi.
Автор, вы его покупали? Если да — то интересно, в чем смысл компоненту распространять бесплатно.
Ну а если нет… тут и так всё понятно.
(16) Magister, Нет, не покупал, нашел в хламнике. Интересно, а почему вам интересно?
Выложил бесплатно чтобы помочь тем кто ищет, потому как сам нуждался в такой.
Ну а чтобы совсем совесть успокоить планирую переписать под Lazarus с применением вышеуказанной библиотеки.
(17) Как раз с точки зрения совести интересно. Ну и можно ли использовать для себя. Получается, что нет.
P.S.http://infostart.ru/public/170940/
(18) Ну вот, теперь мне лень не одолеть, разве что реализовать поддержку xlsx, распарсив его как xmlнапример как учат тут
На своём примере убедился как полезна в работе схожая компонента для 7.7 А теперь ещё и для восьмерки появилась!
Ещё польза в том что в организациях не всегда установлен Эксель на сервере. Через оле в таких случаях не прочитать xls файл и тут как раз выручают такие компоненты. Большое спасибо за труд. Плюсую!
Спасибо!
Все сразу заработало и очень помогло — на сервере нет Экселя.
Да и интерфейс проще, чем к Экселю.
{ВнешняяОбработка.ПросмотрXLSПрямымДоступом.МодульОбъекта(14)}: Ошибка при вызове метода контекста (ПоместитьВоВременноеХранилище)
АдресХранилищаНаСервере = ПоместитьВоВременноеХранилище(Таблица, Новый УникальныйИдентификатор);
по причине:
Переданное значение не может быть помещено во временное хранилище
подозреваю что клиент-сервер, я видел ошибки в таком варианте, надо переделывать, да руки не доходят
(23), у меня точно файловая версия, но выдает такую же ошибку как и в (22)
Проверялось только в толстом клиенте, возможно причина в этом.
Кстати я ушел сам от этого варианта, прайсы гружу из csv-файла.
Намного быстрее чем OLE и универсально.
Могу поделиться наработкой 🙂