dExcel

Программы на Clarion, шаблоны, библиотеки и пр.

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Здравствуйте, Олег !

У меня ячейки не реагируют на мой Вновь созданный стиль

Код: Выделить всё

locXLS    dExcel
font_   byte        ! индекс для фонта
XFstil  byte      ! индекс для стиля
 
  code
      locXLS.ShowError = True
      locXLS.CreateFile('Test.xls')
      locXLS.SetMargin(1,1,1,1)                    
      locXLS.BegTran
 
       font_ = locXLS.AddFont('Arial Cyr',8,3,)     !добавляю фонт

         !------------------------------------------------------------------ добавляю стиль
 
       XFstil = locXLS.AddXF(font_,,,3,1,35,)   ! 8 жирн  заголовок цветная зеленая
 
        !  35 - это зеленый цвет - на любые цыфры от 0, 1 и т д  - не реагирует    
        !  3 - _Alignment -  по центру  - не реагирует
 
        !  1 - BorderLineStyle  -   не получаю окантовку ячейки  
      
       locXLS.Write(val,1,1,XFstil)  

Подскажите ,пожалуйста, что я сделала не так

С уважением, Галина

(Добавление)

типо реклама http://www.ingasoftplus.com - EasyExcel 3.x - MUST HAVE - вопросов не будет :)

С уважением,
Still mailto:zero@clarionlife.net
Написал: ClaList(2)
Гость

Сообщение Гость »

Будут вопросы с лицензией на Exel.

WBR, Nick Tsigouro. MailTo:Nick@arsis.ru
Написал: ClaList(2)
Гость

Сообщение Гость »

Кроме того, видимо, еще и денежку надо заплатить за EasyExcel ?

Alexander Polonskiy <pan@kw.ukrtel.net> (SUPS)
Написал: ClaList(2)
Гость

Сообщение Гость »

Делаете почти все так, только немного не так! :D
Я взял Ваш код один-в-один и у меня все работает!
Причина? Простая - Вы очень неаккуратно используете константы!
Итак Ваш код, в ПРАВИЛЬНОМ исполнении:

...

font_ = locXLS.AddFont('Arial Cyr',8,faBold+faItalic)
XFstil = locXLS.AddXF(font_,,,xfhaCenter,xfblBoxNormal)
! внимательно посмотрите ВСЕ константы, касающиеся окантовки
val = 'Test'
locXLS.Write(Clip(val),1,1,XFstil)
! обратите внимание - методы вывода данных НЕ обрезают
! пробелы в конце строк - они выводят данные в таком виде,
! в каком их получили.

locXLS.CloseFile(True)

В результате получаем окантованную тонкой линией ячейку с отцентрированной строкой 'Test' шрифтом 'Arial Cyr', жирный, наклонный.

Если дополнительно еще хотите залить всю ячейку зеленым цветом, то просто добавьте в стиль правильную константу:
XFstil = locXLS.AddXF(font_,,,xfhaCenter,xfblBoxNormal,ptsFull+flcGreen)

Как видите, все довольно просто, если не выдумывать самой новые константы, а использовать те, которые уже имеются в INC-файле! Тем более, что в описании метода AddXF расписано из каких именно групп констант образуется каждый параметр.

Согласен - с первого взгляда не сразу "врубаешься" в некоторые константы. Особенно для окантовки и заливки!
Но - все претензии к разработчикам Excel 4.0!
Они очевидно старались экономить каждый бит, поэтому и организовали такую "чехарду" с аттрибутами!
А мне пришлось все это распутывать, заметьте - без какой либо документации именно по этим константам.
Все описания по Excel, которые существуют в свободном доступе, касаются или формата 2.1 или сразу 5.0 и выше.
А вот по четверке, переходной версии, увы - ничего!
Поэтому после того, как я их распутал, у меня просто не было никакого желания, да и сил, как либо их упорядочивать.

Удачи!

=============================
С уважением, Олег А. Руденко.
Oleg_Rudenko@mail.ru
Oleg_Rudenko@mail333.com
Библиотека DynaLib
http://dynalib.narod.ru

Просто для информации:
Парни из из проекта OpenOffice уже почти года три пытаются расшифровать
формат excel.
И я бы сказал, что у них это получается.
Результаты лежат http://sc.openoffice.org/excelfileformat.pdf
Все доступно расписано.

У меня даже была мысль выдрать из их исходников openoffice разбор этого
формата.
Но видимо мне это недостаточно сильно нужно.

Nikita Vlasov <nvlasov@bytebratsk.ru>
Написал: ClaList(2)
Гость

Сообщение Гость »

Результаты лежат http://sc.openoffice.org/excelfileformat.pdf
Все доступно расписано.
Не знаю, как "расписано" а в жизни работает с этим форматом вроде ничего - на
людях испытывал... ;)
У меня даже была мысль выдрать из их исходников openoffice разбор этого формата.
Но видимо мне это недостаточно сильно нужно.
И не говори! :) Как-то задумался - и ужаснулся тому, КАК МНОГО в жизни
такого, что мне нужно "недостаточно сильно"... ;D ;)))

--
С уважением,
Степанец Александр Валентинович.

Здравствуйте, Олег !

Спасибо за науку, все получилось.
Поучите пожалуйста меня еще немножко :D

Не получается ввести формулу - хочу сосчитать итог по столбцу все цыфры с 5 ряда в текущем столбце

locXLS.Write:FORMULA('=SUM(R5С:R[-1]C)',col,row)
locXLS.Write:FORMULA('=СУММА(R5С:R[-1]C)',col,row) - тоже не работает хотя эта формула в Excel - работает на ура.
выдает ошибку " Invalid Field Type Descrptor "
Я наверное опять что-то не так делаю....
И еще я хотела уточнить - у нас нет метода для определения ширины ячейки ? Не посоветуете чем

С уважением, Галина.
Не получается ввести формулу - хочу сосчитать итог по столбцу: все цыфры с 5 ряда в текущем столбце
А что такое "текущий столбец" применительно к dExcel!?
locXLS.Write:FORMULA('=SUM(R5С:R[-1]C)',col,row)
locXLS.Write:FORMULA('=СУММА(R5С:R[-1]C)',col,row)
- тоже не работает
Во-первых: координаты ячеек, столбцов и рядов необходимо задавать явно и в виде 'A1'.
Во-вторых: начинать формулу не следует с '='.
Хотя, это я, очевидно, подправлю - что-бы ведущый знак '=' метод игнорировал.
И, в-третьих, формула ЯВНО НЕ ПЕРЕДАЕТСЯ Excel`ю - у него, к сожалению, нет такой возможности принимать формулы в явном виде через XLS-файл! Поэтому метод полностью парсит входную формулу, переводит ее в "обратную польскую запись", кодирует в лексемах Excel и уже в таком подготовленном виде записывает ее в XLS-файл. При открытии файла Excel все эти формулы пересчитывает и выдает на их месте готовый результат.
И это необходимо иметь в виду - мне, честно говоря, совсем не хочется в ПОЛНОЙ мере реализовывать блок обработки формул MS-Excel! И так сделано довольно много - в единственной похожей либе была реализована только работа с функцией SUM в простейшем ее варианте!
выдает ошибку  " Invalid Field Type Descrptor"
Я наверное опять что-то не так делаю....
Исходя из вышеописанного:
- предположим, что "текущая колонка" - это 'A':
locXLS.Write:FORMULA('SUM(A5:A16385)',col,row)

Кстати, спасибо за напоминание - сделать поддержку адресации типа RC! Просто у меня, если и возникает необходимость использовать формулы, то, обычно, только по рядам заданной колонки и, соответственно, нет проблем с указанием явного имени колонки.
А вот насчет '[-1]' - не думаю, что стоит это реализовывать?
И еще я хотела уточнить - у нас нет метода для определения ширины ячейки ?  Не посоветуете чем
Так я же об этом писал уже в предыдущем письме!
В dExcel ширина ячейки задается в символах.
К сожалению, нет возможности точного определения ширины ячейки в зависимости от типа и размера шрифта.
Хотя, конечно, можно определить сначала ширину заданной строки в пикселях WinAPI и уже на ее основе пересчитывать нужную ширину ячейки.
Но, имхо, стоит-ли? В большинстве случаев ширина ячейки в символах вполне подходит!

=============================
С уважением, Олег А. Руденко
Написал: ClaList(2)
Гость

Сообщение Гость »

Работает что? OpenOffice?
Дык, я не об том.
Я том смысле, что Олег Руденко константы расшифровывал, а их описание уже
есть в той бумаге, см. по ссылке.

Nikita Vlasov <nvlasov@bytebratsk.ru>
Написал: ClaList(2)
Ответить