| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			вставка столбца в Excel
			 
			
			Кто-нибудь пробовал вставить целый столбец в Excel 
		
		
		
		
		
		
		
	есть метод COMExcelDocument_RU::numToNameCol() но мне не удалось им овладеть - все ошибки. Покажите, пожалуйста, кусок кода с применением этого метода!  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Microsoft Dynamics 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Добавьте этот метод в класс ComExcelDocument_RU: 
		
		
		
		
		
		
		
	Код: void insertCol(int _Col, int _workSheet = 1, int _offset = 0)
{
    COM         comCols,
                comWorkSheet,
                comcol, comcolTarget;
    COMVariant  comcolVariant;
    ;
    if (! m_comDocument)
        throw error(strFmt("@DIS6401", this.getApplicationName()));
    comWorkSheet  = this.getWorkSheet(_workSheet);
    comcols       = comWorkSheet.columns();
    comcolVariant = comcols.item(_col);
    comcol        = COM::createFromVariant(comcolVariant);
    comcol.copy();
    comcolTarget  = comcol.offset(_offset, 0);
    comcolTarget.insert();
    comcol.clearOutline();
} | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			я имел ввиду столбец с данными 
		
		
		
		
		
		
		
	COMExcelDocument_RU::numToNameCol() используется для вставки данных. Я формирую массив и хочу его разом загнать в столбец в Excel  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Pawlik
			
			 
я имел ввиду столбец с данными 
		
	COMExcelDocument_RU::numToNameCol() используется для вставки данных. Я формирую массив и хочу его разом загнать в столбец в Excel  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Там показана вставка в строки  методом COMExcelDocument_RU::numToNameCell 
		
		
		
		
		
		
		
	и через буфер, а мне в столбец надо методом COMExcelDocument_RU::numToNameCol() у этих методов различаются количество параметров и вроде передаю все нормально, а ругается, поэтому я спрашиваю рабочий код.  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
		
		 
			
			COMExcelDocument_RU::numToNameCell конвертирует номер ячейки состоящий из номера строки и столбца в понятные экселю. Пример: (1, 1) --> A1
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Хорошо а что делает COMExcelDocument_RU::numToNameCol()
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			 Цитата: 
	
		
			Сообщение от Pawlik
			
			 
Хорошо а что делает COMExcelDocument_RU::numToNameCol() 
		
	Спросите у тех, кто этот метод навесил в COMExcelDocument_RU   У меня, например, такого метода нет, Axapta 3.0 SP3 CU1.  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			у меня есть: Axapta 2.5 sp5 
		
		
		
		
		
		
		
	видно не зря убрали  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Судя по названию, этот метод переводит номер столбца в его имя, т.е. 1 -> A, 2 ->B и т.д.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			 
			
			Господа, добрый день! Подскажите, кто-нибудь решал проблему вставки целого столбца с данными в Excel из Axapta? Реализовал данный метод через буфер обмена (смысл такой, что в конце каждого элемента добавлял символ с кодом 13, то бишь Enter). Всё работает, но есть две проблемы: первая, русские символы выводятся коряво и вторая, хотелось бы реализовать не использовав буфер, НО КАК? 
		
		
		
		
		
		
		
		
			  Если есть какие-либо идеи подскажите!!!! ПЛИЗ!!!!!
		Последний раз редактировалось LiSA; 28.03.2006 в 11:30.  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от LiSA
			
			 
первая, русские символы выводятся коряво 
		
	 | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от KMV
			
			 
Нужно программно установить русскую раскладку клавиатуры. Как это сделать можно посмотреть тут. 
		
	  ! А по поводу второго вопроса не подскажите, может уже кто-то реализовывал этот метод?
		 | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Developer 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от LiSA
			
			 
хотелось бы реализовать не использовав буфер, НО КАК? 
		
	  Если есть какие-либо идеи подскажите!!!! ПЛИЗ!!!!!Код: doc.findRange(strfmt("A%1:A%2", CurRow, CurRow+Arr.lastIndex())).value2(COMVariant::createFromArray(Arr)); | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от vallys
			
			 
Можно так, изменив предпоследнюю строку, например, на  
		
	Код: doc.findRange(strfmt("A%1:A%2", CurRow, CurRow+Arr.lastIndex())).value2(COMVariant::createFromArray(Arr));  ! Щас попробую!
		 | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от vallys
			
			 
Можно так, изменив предпоследнюю строку, например, на  
		
	Код: doc.findRange(strfmt("A%1:A%2", CurRow, CurRow+Arr.lastIndex())).value2(COMVariant::createFromArray(Arr));Оно конечно всё красиво, но почему-то в ячейках выводится только первый элемент массива, во всех ячейках!  
		 | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от KMV
			
			 
Нужно программно установить русскую раскладку клавиатуры. Как это сделать можно посмотреть тут. 
		
	ActivateKeyboardLayout.returns(ExtTypes:Word); ActivateKeyboardLayout.arg(ExtTypes:Word,ExtTypes:Word); ActivateKeyboardLayout.call(68748313, 0); и здесь ругается на неверное количество параметров  
		 | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Developer 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от LiSA
			
			 
Оно конечно всё красиво, но почему-то в ячейках выводится только первый элемент массива, во всех ячейках! 
		
	![]()  , диапазон ячеек в одном столбце типа А1:А10 - это уже двумерный массив в отличии от диапазона ячеек в строке, а Аксапта такие массивы не понимает... А забыл - потому что в памяти остался тот факт, что значения в столбцы я все-таки вставлял, только двумерный массив (ComVariant) я брал из другого столбца Эксэля (т.е. копировал содержимое столбцов), в Аксапте такой ComVariant обработать, естественно, нельзя...
		 | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Developer 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от LiSA
			
			 
А что за переменные должны быть здесь?... 
		
	 | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			По поводу переключения раскладки - можно не заморачиваться с ней, а воспользоваться PasteSpecial 
		
		
		
		
		
		
			X++: COMExcelDocument_RU excel = new COMExcelDocument_RU(); TextBuffer tb = new TextBuffer(); COM Doc; COM app; COM sheet; COM cell; ; excel.newFile(); doc = excel.getComDocument(); app = doc.Application(); sheet = app.ActiveSheet(); cell = sheet.Range("B2"); cell.Select(); tb.setText("Строка1\tКолонка2\nСтрока2\tКолонка2\nСтрока3\tКолонка2\nСтрока4\tКолонка2"); tb.toClipboard(); sheet.PasteSpecial(COMVariant::createFromStr("Текст")); 
				__________________ 
		
		
		
		
	Axapta v.3.0 sp5 kr2  | 
| 
	
 |