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