| 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 |  | 
	
		|  | 
	
		|  |