powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Получение значения из Excel - строка на русском
9 сообщений из 9, страница 1 из 1
Получение значения из Excel - строка на русском
    #34697663
Dmitry E. Loginov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Проблема в следующем:
в событии 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
Получение значения из Excel - строка на русском
    #34697672
Dmitry E. Loginov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Версии: ОСЬ XP eng + MUI русский, ЛОкаль по умолчанию Русский
Офис 2003, русский
PowerBuilder Enterprise/32 v6.0
...
Рейтинг: 0 / 0
Получение значения из Excel - строка на русском
    #34698560
craftyman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в ПБ10.5 всё нормально. Русская кодировка передается отлично.
Копать, думаю, стоит в сторону Юникода.
...
Рейтинг: 0 / 0
Получение значения из Excel - строка на русском
    #34698604
craftyman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хм... странно у меня в и 6том билдере всё нормально. правда, у меня винда 2002, а в остальном всё так же.
...
Рейтинг: 0 / 0
Получение значения из Excel - строка на русском
    #34707135
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помимо локали посмотри для не юникодовой - должно стоять русский
--------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
Получение значения из Excel - строка на русском
    #34714907
Dmitry E. Loginov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
spas2001Помимо локали посмотри для не юникодовой - должно стоять русский

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

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

ПОДТВЕРЖДАЮ, в PB10.5
РАБОТАЕТ всё ХОРОШО.
...
Рейтинг: 0 / 0
Получение значения из Excel - строка на русском
    #34719226
Voitovych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЕСЛИ АКТУАЛЬНО
работающий код в среде 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
9 сообщений из 9, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Получение значения из Excel - строка на русском
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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