Форум » [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

Andrey: Dima пишет: А посмотри примерчик \svn\harbour\contrib\hbwin\tests\testole.prg Нашёл. Спасибо !

Andrey: Задал фонт на таблицу: oSheet:Cells:Font:Name := "Arial" oSheet:Cells:Font:Size := 15 Как узнать ширину строки заголовка таблицы (например "Кол-во товара") по этому фонту, чтобы установить ширину колонки: oSheet:columns( 2 ):columnwidth := ???

Dima: Сделай проще oSheet:Columns(2):AutoFit()


Andrey: Dima пишет: Сделай проще oSheet:Columns(2):AutoFit() Классно ! Работает. Спасибо !

Andrey: Делаю вывод чисел так: oSheet:Cells( nLine, nI ):SET( 'NumberFormat', '########0,00' ) // числовая ячейка а для целых чисел какой вывод нужно делать ? И как определить по значению - целое число или дробное ?

Dima: Andrey пишет: а для целых чисел какой вывод нужно делать ? гугл ни кто не отменял NumberFormat := '#,##0' ЗЫ // Установим формат целых чисел с разделителем тысяч

Dima: Andrey пишет: И как определить по значению - целое число или дробное ? считай , преобразуй в символьную и чекани строку на предмет ".000" если TRUE значит целое. Хотя может в Ёксель что то есть в этом плане. Гуглить надо.

Andrey: Dima пишет: Хотя может в Ёксель что то есть в этом плане. Гуглить надо. Я это и имел ввиду, что может уже кто знает. Спасибо, погуглил... Решение то оказывается на поверхности лежит: IF INT(xValue) == xValue // значит целое число oSheet:Cells( nLine, nI ):SET( 'NumberFormat', '########0' ) // числовая ячейка ELSE oSheet:Cells( nLine, nI ):SET( 'NumberFormat', '########0,00' ) // числовая ячейка ENDIF

Andrey: Сделал прогу, под Ёкселем 2003 - работает нормально. 5 сек. и появляется таблица. У клиента стоит Ёксел 2007, окно не появляется, пока не залезть в Диспетчер задач и не переключиться на "Microsoft Office Excel - проверка совместимости" и в этом дурацком окне нужно нажать кнопку "Продолжить" !!! Блин, юзера выть будут... Погуглил, решения не нашёл. Подскажите пожалуйста решение ? Или отключить в Ёкселе 2007 эту проверку или при создание в ОЛЕ прописать, что файл 2007 версии.

Dima: Начинаешь так ? CreateObject( "Excel.Application" ) Заканчиваешь так ? oExcel:Visible := .t. ЗЫ Вижу...http://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=8&TID=23794 Дело не в этом похоже о чем выше я написал. Думаю нужно определять активную версию оффиса ну и дописывать цифирки после точки в "Excel.Application.999" Нужно выложить готовую функцию думаю для проверки версии (100 % работающую) , мне такая была не нужна так как все сидят на 2003. Функцию для CreateObject( "Excel.Application"+VersEXCEL() )

Andrey: Делаю так: oExcel := TOleAuto():NEW( "Excel.Application" ) oWorkBook := oExcel:WorkBooks:Add() Dima пишет: Думаю нужно определять активную версию оффиса ну и дописывать цифирки после точки в "Excel.Application.999" А какие цифирьки для 2007 поставить нужно ?

Dima: Andrey пишет: А какие цифирьки для 2007 поставить нужно ? Погугли я точно не помню так как не использую НО они есть. Где то было на форуме.....лень искать Гугл :) ' open Excel 2003 Set obj1 = CreateObject("Excel.Application.11") ' open Excel 2007 Set obj2 = CreateObject("Excel.Application.12")

Andrey: Ещё нашел такой ключ: ActiveWorkbook.CheckCompatibility = False Может его к себе в прогу засунуть ? Dima пишет: Функцию для CreateObject( "Excel.Application"+VersEXCEL() ) Пишем с точкой или без точки - "Excel.Application.999" - ? Увидел ответ на свой вопрос... Уже ответил. Спасибо !

Andrey: Dima пишет: ? oExcel:Version А как тогда создаем CreateObject("Excel.Application.11"), если версию можем получить после создания объекта ?

Dima: Версию получить нужно ДО создания. Поищи на форуме что то типа "Excel.Application.11"

Dima: http://clipper.borda.ru/?1-4-0-00000578-000-0-0-1345918268 Пост 92 Там же твой ответ "спасибо попробую" , но похоже руки не дошли. Бывает. PS Если разобрался , выкладывай готовую функцию , проверим.

Andrey: Dima пишет: Если разобрался , выкладывай готовую функцию , проверим. Делаю отдельный пример. Как сделаю - выложу !

Dima: Andrey В этой теме посмотри посты номер 4662 , 518

Andrey: Сделал тест. На Excel 2013 тоже работает без проблем. Поставил в виртуалке 2007. Опять фигня, уже в другом месте: Строка 226 - oExcel:ActiveSheet:PageSetup:Zoom := FALSE Что не нравиться опять 2007 ? Блин, ни одного принтера в виртуалке нет... Как у себя в проге проверить, чтобы не вылетало ?

Andrey: Нашёл функцию: oExcel:ActivePrinter - возвращает "неизвестный принтер (проверте Панель Управления)"



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