Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Получение значения из Excel - строка на русском / 9 сообщений из 9, страница 1 из 1
01.08.2007, 12:32
    #34697663
Dmitry E. Loginov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значения из Excel - строка на русском
Добрый день.
Проблема в следующем:
в событии on_click кнопки на обыкновенном окне пишу код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
String ifn, ifp, s
Long res
any a
oleobject xls, rng

res=GetFileOpenName ( 'Выберите файл', ifp, ifn,'xls','Excel,*.xls')
if res< 1  then return

xls = create oleobject
xls.ConnectToNewObject('Excel.Application')
xls.WorkBooks.Open(ifp, 0 ,true)
rng = xls.ActiveSheet.Cells( 1 , 1 )
a = rng.Value
s = a
messagebox('Отладка', ClassName(a) + ': '+ s)
xls.DisplayAlerts=false
xls.Quit
destroy xls
Который, по моей задумке должен взять значение из колонки A1. С латинницей и цифрами - всё прекрасно, а вот если в значении есть русские буквы - возвращаются кракозяблики, причём каждый раз - разные (при неизменном значении ячейки A1).

Подскажите, куда копать?
...
Рейтинг: 0 / 0
01.08.2007, 12:35
    #34697672
Dmitry E. Loginov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значения из Excel - строка на русском
Версии: ОСЬ XP eng + MUI русский, ЛОкаль по умолчанию Русский
Офис 2003, русский
PowerBuilder Enterprise/32 v6.0
...
Рейтинг: 0 / 0
01.08.2007, 15:58
    #34698560
craftyman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значения из Excel - строка на русском
в ПБ10.5 всё нормально. Русская кодировка передается отлично.
Копать, думаю, стоит в сторону Юникода.
...
Рейтинг: 0 / 0
01.08.2007, 16:07
    #34698604
craftyman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значения из Excel - строка на русском
хм... странно у меня в и 6том билдере всё нормально. правда, у меня винда 2002, а в остальном всё так же.
...
Рейтинг: 0 / 0
06.08.2007, 11:20
    #34707135
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значения из Excel - строка на русском
Помимо локали посмотри для не юникодовой - должно стоять русский
--------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
08.08.2007, 17:57
    #34714907
Dmitry E. Loginov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значения из Excel - строка на русском
spas2001Помимо локали посмотри для не юникодовой - должно стоять русский

Да, Language for non-Unicode programs в Региональных настройках на закладке Advanced - Russian

Вобщем наверно не судьба в PB6 работать с OLE и русскими строками :(
...
Рейтинг: 0 / 0
09.08.2007, 08:33
    #34715653
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значения из Excel - строка на русском
Но ведь работали же мы и в 6-ке
Шрифтик проверь на котором значения вносятся
Плюс в реестре поменяй 1252 на 1251
--------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
09.08.2007, 11:30
    #34716260
Voitovych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значения из Excel - строка на русском
авторв ПБ10.5 всё нормально. Русская кодировка передается отлично.

ПОДТВЕРЖДАЮ, в PB10.5
РАБОТАЕТ всё ХОРОШО.
...
Рейтинг: 0 / 0
10.08.2007, 11:25
    #34719226
Voitovych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значения из Excel - строка на русском
ЕСЛИ АКТУАЛЬНО
работающий код в среде PB10.5

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
String ifn, ifp, s, msg
Long res
any a
oleobject xls, rng
res=GetFileOpenName ( 'Выберите файл', ifp, ifn,'xls','Excel,*.xls')
if res< 1  then return
xls = create oleobject
xls.ConnectToNewObject('Excel.Application')
xls.WorkBooks.Open(ifp, 0 ,true)
rng = xls.ActiveSheet.Cells(i_row, i_column) 
// был тип данных в ячейке  общий, поставил числовой  11 . 00 , сделал  0  знаков после
// точки - need правильно выбрать CASE  "double"
a = rng.Value
// надо проверять что в ячейке - число или текст
any la_spreadsheetdata
la_spreadsheetdata = rng.Value
CHOOSE CASE ClassName(la_spreadsheetdata)
    CASE  "double"  		 //  не подошло "float"  // "integer"
		s = string(a)
	CASE "string"
        s = a // for text - OK!
END CHOOSE

msg = "тип данных в ячейке:~nCell ( " + string(i_row) + " , " + string (i_column) + " )~n" + &
	ClassName(a) + ': ~n'+ s
MessageBox('Отладка', msg)

i_column ++  // чтобы печатать только первую и  2 -ую колонку
if i_column >  2  then
	i_column =  1 
end if

xls.DisplayAlerts=false
xls.Quit
destroy xls
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Получение значения из Excel - строка на русском / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]