Форум » [x]Harbour » Снова EXCEL (продолжение) » Ответить

Снова EXCEL (продолжение)

Dima: Ранее с Excel из Harbour ни когда не работал. Поставили тут задачу. У некоторых поставщиков есть определенные формы заказов. Набраны они в Excel. Сейчас народ руками заполняет эти формы и шлет по электронке поставщикам. Задача сводится к тому что бы в этих формах находить нужные коды товара и в нужной ячейке проставлять заказ. Может ткнет кто носом с чего начать что бы не напороться на грабли. Спасибо Сами формы тут http://zalil.ru/33279066

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

vvv: Dima пишет: Для начала проверь , будет ли создаваться OLE объект Excel Похоже, не создается. Вот текст ошибки из примера "OLE" --------------------- Internal Error Handling Information --------------------- Subsystem Call ....: TOleAuto System Code .......: -1 Default Status ....: .F. Description .......: CO_E_CLASSSTRING Operation .........: TOLEAUTO:NEW Involved File .....: Dos Error Code ....: 0 SergKis пишет: схема работы с xml должна работать Не, xml не подходит. Суть работы в следующем: открыть xls файл (приходит со стороны), кое-что поменять и сохранить (с сохранением форматирования) под новым именем. В принципе, есть работающий костыль на Йокселе, но Йоксель рандомно затирает формулы и приходится постоянно контролировать результат. Иногда еще теряется формат ячеек, тоже рандомно. Причем потери возникают именно при открытии файла.

SergKis: vvv Если надо менять и присутствуют формулы ..., зачем искать приключений с portable, йоксель, просто установите excel. Есть, конечно, LibXL (можно читать, писать и т.д.), но она платная

vvv: Да сам не знаю, почему ексель не хочется ставить. Может азарт какой "а можно ли без".


PSP: Даже в Википедии написано, что технология OLE использует архитектуру «толстого клиента», то есть сетевой ПК с избыточными вычислительными ресурсами. Это означает, что тип файла либо программа, которую пытаются внедрить, должна присутствовать на машине клиента. Например, если OLE оперирует таблицами Microsoft Excel, то программа Excel должна быть инсталлирована на машине пользователя https://ru.wikipedia.org/wiki/Object_Linking_and_Embedding

vvv: PSP пишет: Даже в Википедии написано, что цитата: технология OLE использует архитектуру «толстого клиента», то есть сетевой ПК с избыточными вычислительными ресурсами. Это означает, что тип файла либо программа, которую пытаются внедрить, должна присутствовать на машине клиента. Например, если OLE оперирует таблицами Microsoft Excel, то программа Excel должна быть инсталлирована на машине пользователя А вот здесь просто интересно, что вложено в данном конкретном случае в понятие "инсталлирована". Портабельный excel присутствует, но он "не инсталлирован", однако работает.

SergKis: vvv пишет Может азарт какой "а можно ли без" В качестве фантазии\приключения (не пробовал) и азарта "а можно ли без". Вариант vba и макросов с назначением вып. макроса на клавишу Ctrl+Shift+... и попытки посылать из hb окну excel этих клавиш для выполнения нужного макроса (после run portable excel file.xls)

PSP: vvv пишет: А вот здесь просто интересно, что вложено в данном конкретном случае в понятие "инсталлирована". Портабельный excel присутствует, но он "не инсталлирован", однако работает. По-моему, у понятия "инсталлирована" нет двойного смысла. Оно однозначно. "Неинсталлированный" excel работает сам по себе, но система о нем ничего не знает и поэтому не может создать экземпляр объекта на основании этого экселя.

vvv: PSP пишет: "Неинсталлированный" excel работает сам по себе, но система о нем ничего не знает и поэтому не может создать экземпляр объекта на основании этого экселя. Вот и хочется либо сообщить системе об этом екселе, либо, зная его месторасположение, использовать его мозги.

vvv: SergKis пишет: В качестве фантазии\приключения (не пробовал) и азарта "а можно ли без". Вариант vba и макросов с назначением вып. макроса на клавишу Ctrl+Shift+... и попытки посылать из hb окну excel этих клавиш для выполнения нужного макроса (после run portable excel file.xls) А можно попробовать в праздники, если делать нечего будет.

Dima: vvv пишет: А можно попробовать в праздники, если делать нечего будет. Погугли на предмет Portable Excel Create Ole Object

Pasha: Скачал portable office с рутрекера: https://rutracker.org/forum/viewtopic.php?t=5526478 а касперский его сразу грохнул, говорит мол: бяка, лечение невозможно Нет ли ссылки без бяки ?

Dima: Pasha Забей в поиске на рутрекере лучше так "Portable Office 2003" Всего 12 ссылок

Pasha: Да я видел эти сборки, в комментариях пишут: на win10 не идет, а у меня как раз она. Автор сборок смотрю тот же

Dima: Pasha Паш забей на портабл , так как служба не загружена , ни чего не выйдет стандартными методами и придется выкручиваться.

PSP: vvv пишет: Вот и хочется либо сообщить системе об этом екселе, либо, зная его месторасположение, использовать его мозги. "Сообщить" системе можно очень просто: инсталлировать)) Всё остальное - фантазии. Это всё равно, что иметь автомобиль без мотора и думать, что автомобилю можно просто "сообщить", что мотор лежит в гараже и машина будет ехать только от этого "знания")))

Dima: По ходу можно пробнуть , но не факт что сработает. Грузим Excel (portable) через hb_processOpen (например) После пробуем что то типа oExcel := GetActiveObject( "Excel.Application" )

Haz: Портабле приложения запускаются в своем окружении "песочнице" и этому приложению подсовывается наследие системы где его подготовили. А вовсе не наоборот. OLE точно работать не будет. VBA и макросы будут. Но об этом уже выше написано. Более того, если даже всю подготовку сделать, к примеру в xml, то система не будут иметь ассоциированного приложения с этим xml. Нужно руками запустить портабле ехель и руками открыть файл xml. Подобные приложения используются для работы в ручном режиме при угрозе влететь на лицензию. Для автоматизации они не годятся в привычном смысле. А для людей творческих, ничто не мешает из своей программы на харбуре запустить портабле ехель и дождавшись загрузки управлять ехелем нажимая на кнопки на его морде посылая соответствующие сообщения определенным окнам ехеля. Но это еще то шапито.

SergKis: Haz пишет Подобные приложения используются для работы в ручном режиме при угрозе влететь на лицензию Для работы одну лицензию можно приобрести, не ней проделывать манипуляции с документами через ole и раздавать для использования в portable excel на другие pc. Будет дешевле, во всех смыслах, чем "шапито"

Haz: SergKis пишет: Для работы одну лицензию можно приобрести, Согласен, но это к заказчику. А у заказчика в голове мозг по другому работает.

Vlad04: Посмотрел примеры - в основном выгрузка в Excel. У меня задача обратная - нужно прочесть данные с большого Excel файла (несколько десятков тысяч записей ). Размеры файла могут быть разные, т.е. не знаю сколько строк. Все читается через OLE, но очень долго, несколько минут. Как ускорить ?



полная версия страницы