On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение





Пост N: 224
Зарегистрирован: 17.10.05
ссылка на сообщение  Отправлено: 30.04.22 11:37. Заголовок: Excel NumberFormat


Столкнулся с таким багом. Может, кто поборол его?
Если вывожу TSBrowse в Excel с помощью метода oBrw:ExcelOle, то числовое поле со значением
к примеру 3.87 выводится как дата Март 1987.
А если выводить с помощью метода oBrw:Excel2 -> то все, как надо.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 5 [только новые]


Администратор




Пост N: 4077
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.05.22 13:15. Заголовок: Как бы надо доработа..


Как бы надо доработать метод ExcelOle, добавить возможность устанавливать нужный NumberFormat для колонки
Сейчас он устанавливается только для типа данных character, для остальных Excel сам преобразует ячейку, вот и получается фигня
Может в TSColumn:cargo как-то отмечать, или добавить отдельное свойство в TSColumn

Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 225
Зарегистрирован: 17.10.05
ссылка на сообщение  Отправлено: 01.05.22 13:28. Заголовок: Спасибо. Попробую с..


Спасибо. Попробую сделать пока отдельную функцию, а потом переведу в метод класса...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4123
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.05.22 14:26. Заголовок: krutoff пишет Попроб..


krutoff пишет
 цитата:
Попробую сделать пока отдельную функцию, а потом переведу в метод класса...


Может достаточно так сделать
 
METHOD ExcelOle( cXlsFile, lActivate, hProgress, cTitle, hFont, lSave, bExtern, aColSel, bPrintRow ) CLASS TSBrowse
LOCAL oExcel, oBook, oSheet, nRow, nCol, uData, nEvery, oRange, cRange, cCell, cLet, nColHead, nVar, ;
cText, nStart, nTotal, aFont, aRepl, hFntTitle, ;
nLine := 1, ;
nCount := 0, ;
nRecNo := ( ::cAlias )->( RecNo() ), ;
nAt := ::nAtPos, ;

aCol := { 26, 52, 78, 104, 130, 156 }, ;
aLet := { "", "A", "B", "C", "D", "E" }, ;
nOldRow := ::nLogicPos(), ;
nOldCol := ::nCell, ;
lSelector := ::lSelector
LOCAL nTmp, cTmp

...
uData := ::bDataEval( ::aColumns[ nCol ] )

IF ValType( uData ) == "C"
oSheet:Cells( nLine, nCol ):NumberFormat := "@"

IF At( CRLF, uData ) > 0
uData := StrTran( uData, CRLF, "&&" )

IF AScan( aRepl, nCol ) == 0
AAdd( aRepl, nCol )
ENDIF
ENDIF
ENDIF

//IF ::aColumns[ nCol ]:cPicture != NIL .AND. uData != NIL
// uData := Transform( uData, ::aColumns[ nCol ]:cPicture )
//ENDIF

IF ValType( uData ) == "N"

IF ::aColumns[ nCol ]:cPicture != NIL
uData := Transform( uData, ::aColumns[ nCol ]:cPicture )
ELSE
uData := cValToChar(uData)
ENDIF

cTmp := "#0"
IF ( nTmp := AT(".", uData) ) > 0
cTmp := Repl("#", nTmp - 2) + '0,' + Repl("0", Len(uData) - nTmp)
ENDIF

oSheet:Cells( nLine, nCol ):NumberFormat := cTmp

ELSE

IF ::aColumns[ nCol ]:cPicture != NIL .AND. uData != NIL
uData := Transform( uData, ::aColumns[ nCol ]:cPicture )
ENDIF

uData := iif( ValType( uData ) == "D", DToC( uData ), iif( ValType( uData ) == "N", Str( uData ), ;
iif( ValType( uData ) == "L", iif( uData, ".T.", ".F." ), cValToChar( uData ) ) ) )

ENDIF

cText += Trim( uData ) + Chr( 9 )
...

и собрать tsbrowse.lib, запустив MakeLib.bat

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4124
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.05.22 00:23. Заголовок: Поправил текст выше ..


Поправил текст выше т.к. спутал ::bDataEval(...) с ::GetValue(...)

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 2036
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 02.05.22 19:34. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Поправил текст


OK
Благодарю за помощь

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 605
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет