View previous topic :: View next topic |
Author |
Message |
AndReW_Samara
Joined: 13 Feb 2002 Posts: 86 Location: Колуж Андрей Валериевич Occupation: Гелиос-7 (начальник отдела автоматизации) Interests: Самара
|
Posted: 17 Jun 2005 10:47 Post subject: Программирование на Harbour |
|
|
Господа программисты! Help!!!
На Harbour-e пишу отчеты в Excel для БЭСТ-4+. В целом вроде проблем особых нет, но столкнулся с одним неприятным моментом.
Как определить буквенный индекс колонки листа Excel программно? Это особенно актуально для многоколоночных отчетов с переменным числом колонок. Вручную забивать список соответствия числа букве как-то не особо хочется. Ведь колонок может быть более сотни!
Пробовал изменить стиль ссылок на R1C1, на листе поменялось, а Harbour все равно понимает только формат A1. Может, и Harbour'у нужно это где-то прописать? |
|
Back to top |
|
|
Титов Александр
Joined: 26 Jul 2002 Posts: 975 Location: Титов Александр Александрович Occupation: Компания БЭСТ Interests: Москва
|
Posted: 17 Jun 2005 11:35 Post subject: Re: Программирование на Harbour |
|
|
AndReW_Samara wrote: | Господа программисты! Help!!!
На Harbour-e пишу отчеты в Excel для БЭСТ-4+. В целом вроде проблем особых нет, но столкнулся с одним неприятным моментом.
Как определить буквенный индекс колонки листа Excel программно? Это особенно актуально для многоколоночных отчетов с переменным числом колонок. Вручную забивать список соответствия числа букве как-то не особо хочется. Ведь колонок может быть более сотни!
Пробовал изменить стиль ссылок на R1C1, на листе поменялось, а Harbour все равно понимает только формат A1. Может, и Harbour'у нужно это где-то прописать? |
Добрый день!
Если я правильно понял, то можно вот так, например, это работает:
STATIC FUNCTION GetMyCol(nCol)
IF nCol<=26
RETURN CHR(ASC("A")+nCol-1)
ELSEIF nCol>26*8
RETURN "H"+CHR(ASC("A")+nCol-26*8-1)
ELSEIF nCol>26*7
RETURN "G"+CHR(ASC("A")+nCol-26*7-1)
ELSEIF nCol>26*6
RETURN "F"+CHR(ASC("A")+nCol-26*6-1)
ELSEIF nCol>26*5
RETURN "E"+CHR(ASC("A")+nCol-26*5-1)
ELSEIF nCol>26*4
RETURN "D"+CHR(ASC("A")+nCol-26*4-1)
ELSEIF nCol>26*3
RETURN "C"+CHR(ASC("A")+nCol-26*3-1)
ELSEIF nCol>26*2
RETURN "B"+CHR(ASC("A")+nCol-26*2-1)
ELSEIF nCol>26
RETURN "A"+CHR(ASC("A")+nCol-26-1)
ENDIF
RETURN CHR(ASC("A")+nCol-1)
А если использовать объект Cells, то буквенного индекса и не требуется. _________________ С уважением, Александр Титов, Компания БЭСТ, Москва, отдел разрабо |
|
Back to top |
|
|
AndReW_Samara
Joined: 13 Feb 2002 Posts: 86 Location: Колуж Андрей Валериевич Occupation: Гелиос-7 (начальник отдела автоматизации) Interests: Самара
|
Posted: 17 Jun 2005 11:52 Post subject: |
|
|
Спасибо. Все получилось. Я уже и сам начал было писать что-то подобное, но вы меня опередили |
|
Back to top |
|
|
|