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

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

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

Ответов - 134, стр: 1 2 3 4 5 6 7 All

Pasha: По поводу этого кода. Оригинальный фрагмент там совсем небольшой: создание двумерного массива, все остальное пришлось копировать из сырцов hbwin и xharbour, так как нужные функции там объявлены как static, и их не вызовешь. Как раз месяц назад в harbour dev list было обсуждение этого вопроса, и есть надежда, что поддержка таких массивов будет добавлена в hbwin. Тогда эта функция станет не нужна. Сейчас ее можно использовать для решения вполне конкретной и ограниченной задачи. Это что-то вроде заплатки.

Pasha: Pasha пишет: и есть надежда, что поддержка таких массивов будет добавлена в hbwin. Тогда эта функция станет не нужна. Ну вот, все вопросы в dev list утрясены, и поддержка многомерных массивов Variant добавлена в Harbour. Пример для заполнения диапазона в Excel: // файл из contrib\hbwin #include "hbole.ch" local aSet[nRows, nColumns] // далее надо заполнить двумерный массив со значениями ячеек // и вызвать oRange:Value := __oleVariantNew( WIN_VT_VARIANT, aSet, nRows, nColunms )

Dima: Pasha пишет: Ну вот, все вопросы в dev list утрясены, и поддержка многомерных массивов Variant добавлена в Harbour. Спасибо.

Vlad04: http://xlslib.sourceforge.net/index.php What is xlsLib? xlsLib is a multiplatform, a C/C++ library for dynamically generating Excel(TM) files (*.xls format). It allows the generation of these files directly without the need of other assistive software. xlsLib can be used: as a statically linked library. xlsLib can easily be integrated in any C/C++ project. As a dynamically linked library. The classic shared object scheme can be followed for using xlsLib. Последние обновления , кажется 14 годом.

Vlad04: Петр Может быть Вы обратили свое внимание на эту библиотеку. Цель - возможность работы с ней в Харбор/ MiniGui

Петр: Vlad04 пишет: Может быть Вы обратили свое внимание на эту библиотеку. Цель - возможность работы с ней в Харбор/ MiniGui Честно говоря, я не вижу в этом никакого профита. Активное продвижение формата xls завершилось в 2003 году - 14 лет назад. К тому же, несмотря на заявления, xlsLib типичная C++ библиотека. Использование с harbour (C) возможно, но это довольно сомнительное удовольствие. В MiniGUI есть пример для работы с libxlsxwriter.dll (формат xlsx).

Vlad04: Петр Ок, формат не критичен. К сожалению libxlsxwriter.dll имеет ряд ограничений - она не может читать или изменять существующие файлы! И , наверно, обязательно д.быть установлен Excel

Петр: Vlad04 пишет: К сожалению libxlsxwriter.dll имеет ряд ограничений - она не может читать или изменять существующие файлы! То же самое можна сказать о xlsLib Vlad04 пишет: И , наверно, обязательно д.быть установлен ExcelНет

Панченко: Петр пишет: В MiniGUI есть пример для работы с libxlsxwriter.dll (формат xlsx). Где лежит? Что-то не нахожу...

Dima: Панченко пишет: Где лежит? Что-то не нахожу... C:\MiniGUI\SAMPLES\Advanced\HbXlsxWriter\

Панченко: Dima Спасибо. Перешел на версию 17.06. Действительно, пример там и лежит :))

Панченко: Pasha пишет: все вопросы в dev list утрясены, и поддержка многомерных массивов Variant добавлена в Harbour. ... oRange:Value := __oleVariantNew( WIN_VT_VARIANT, aSet, nRows, nColunms ) Логичным был бы второй шаг - такое же быстрое заполнение массива значениями oRange:Value. Этот вопрос не поднимается?

Pasha: И до этих правок можно было считать в массив значение Range для диапазона ячеек. Только массив получался с перевернутыми размерностями: сначала столбец, потом строка. Теперь же в массив считываются значения диапазона как положено: [ <строка>, <столбец> ] Никаких дополнительных функций вызывать не надо, просто вызвать: aValues := oRange:Value

Панченко: to Pasha Спасибо.



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