AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.03.2006, 17:01   #1  
Pawlik is offline
Pawlik
Участник
 
25 / 10 (1) +
Регистрация: 16.11.2005
вставка столбца в Excel
Кто-нибудь пробовал вставить целый столбец в Excel
есть метод
COMExcelDocument_RU::numToNameCol()

но мне не удалось им овладеть - все ошибки.
Покажите, пожалуйста, кусок кода с применением этого
метода!
Старый 24.03.2006, 17:36   #2  
Jabberwocky is offline
Jabberwocky
Microsoft Dynamics
Аватар для Jabberwocky
Сотрудники Microsoft Dynamics
 
274 / 307 (11) ++++++
Регистрация: 02.09.2005
Адрес: Москва
Добавьте этот метод в класс 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();
}
Старый 24.03.2006, 17:40   #3  
Pawlik is offline
Pawlik
Участник
 
25 / 10 (1) +
Регистрация: 16.11.2005
я имел ввиду столбец с данными
COMExcelDocument_RU::numToNameCol()
используется для вставки данных.
Я формирую массив и хочу его разом загнать в столбец в Excel
Старый 24.03.2006, 17:43   #4  
Berg is offline
Berg
Участник
 
7 / 10 (1) +
Регистрация: 20.01.2006
Цитата:
Сообщение от Pawlik
я имел ввиду столбец с данными
COMExcelDocument_RU::numToNameCol()
используется для вставки данных.
Я формирую массив и хочу его разом загнать в столбец в Excel
ЙОПТА, вам же http://www.axforum.info/forums/showthread.php?t=12651 объясняли уже
Старый 24.03.2006, 17:48   #5  
Pawlik is offline
Pawlik
Участник
 
25 / 10 (1) +
Регистрация: 16.11.2005
Там показана вставка в строки методом COMExcelDocument_RU::numToNameCell
и через буфер, а мне в столбец надо
методом COMExcelDocument_RU::numToNameCol()
у этих методов различаются количество параметров и вроде
передаю все нормально, а ругается,
поэтому я спрашиваю рабочий код.
Старый 24.03.2006, 17:52   #6  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,490 / 1060 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
COMExcelDocument_RU::numToNameCell конвертирует номер ячейки состоящий из номера строки и столбца в понятные экселю. Пример: (1, 1) --> A1
Старый 24.03.2006, 17:55   #7  
Pawlik is offline
Pawlik
Участник
 
25 / 10 (1) +
Регистрация: 16.11.2005
Хорошо а что делает COMExcelDocument_RU::numToNameCol()
Старый 24.03.2006, 18:41   #8  
Lemming is offline
Lemming
Участник
Аватар для Lemming
 
1,144 / 343 (14) ++++++
Регистрация: 20.04.2004
Адрес: Москва, Чайнатаун в Люблино
Записей в блоге: 10
:)
Цитата:
Сообщение от Pawlik
Хорошо а что делает COMExcelDocument_RU::numToNameCol()

Спросите у тех, кто этот метод навесил в COMExcelDocument_RU

У меня, например, такого метода нет, Axapta 3.0 SP3 CU1.
Старый 24.03.2006, 18:46   #9  
Pawlik is offline
Pawlik
Участник
 
25 / 10 (1) +
Регистрация: 16.11.2005
у меня есть: Axapta 2.5 sp5
видно не зря убрали
Старый 25.03.2006, 10:33   #10  
Peter Savintsev is offline
Peter Savintsev
Участник
 
246 / 119 (4) +++++
Регистрация: 14.12.2001
Судя по названию, этот метод переводит номер столбца в его имя, т.е. 1 -> A, 2 ->B и т.д.
Старый 28.03.2006, 11:06   #11  
LiSA is offline
LiSA
Участник
 
19 / 10 (1) +
Регистрация: 28.03.2006
:(
Господа, добрый день! Подскажите, кто-нибудь решал проблему вставки целого столбца с данными в Excel из Axapta? Реализовал данный метод через буфер обмена (смысл такой, что в конце каждого элемента добавлял символ с кодом 13, то бишь Enter). Всё работает, но есть две проблемы: первая, русские символы выводятся коряво и вторая, хотелось бы реализовать не использовав буфер, НО КАК? Если есть какие-либо идеи подскажите!!!! ПЛИЗ!!!!!

Последний раз редактировалось LiSA; 28.03.2006 в 11:30.
Старый 28.03.2006, 11:40   #12  
KMV is offline
KMV
Участник
 
201 / 25 (1) +++
Регистрация: 11.10.2002
Адрес: Москва
Цитата:
Сообщение от LiSA
первая, русские символы выводятся коряво
Нужно программно установить русскую раскладку клавиатуры. Как это сделать можно посмотреть тут.
Старый 28.03.2006, 11:43   #13  
LiSA is offline
LiSA
Участник
 
19 / 10 (1) +
Регистрация: 28.03.2006
Цитата:
Сообщение от KMV
Нужно программно установить русскую раскладку клавиатуры. Как это сделать можно посмотреть тут.
Спасибо ! А по поводу второго вопроса не подскажите, может уже кто-то реализовывал этот метод?
Старый 28.03.2006, 11:53   #14  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Цитата:
Сообщение от LiSA
хотелось бы реализовать не использовав буфер, НО КАК? Если есть какие-либо идеи подскажите!!!! ПЛИЗ!!!!!
Можно так, изменив предпоследнюю строку, например, на
Код:
doc.findRange(strfmt("A%1:A%2", CurRow, CurRow+Arr.lastIndex())).value2(COMVariant::createFromArray(Arr));
Старый 28.03.2006, 12:16   #15  
LiSA is offline
LiSA
Участник
 
19 / 10 (1) +
Регистрация: 28.03.2006
Цитата:
Сообщение от vallys
Можно так, изменив предпоследнюю строку, например, на
Код:
doc.findRange(strfmt("A%1:A%2", CurRow, CurRow+Arr.lastIndex())).value2(COMVariant::createFromArray(Arr));
Спасибки ! Щас попробую!
Старый 28.03.2006, 13:01   #16  
LiSA is offline
LiSA
Участник
 
19 / 10 (1) +
Регистрация: 28.03.2006
Цитата:
Сообщение от vallys
Можно так, изменив предпоследнюю строку, например, на
Код:
doc.findRange(strfmt("A%1:A%2", CurRow, CurRow+Arr.lastIndex())).value2(COMVariant::createFromArray(Arr));

Оно конечно всё красиво, но почему-то в ячейках выводится только первый элемент массива, во всех ячейках!
Старый 28.03.2006, 13:05   #17  
LiSA is offline
LiSA
Участник
 
19 / 10 (1) +
Регистрация: 28.03.2006
Цитата:
Сообщение от KMV
Нужно программно установить русскую раскладку клавиатуры. Как это сделать можно посмотреть тут.
А что за переменные должны быть здесь?
ActivateKeyboardLayout.returns(ExtTypes:Word);
ActivateKeyboardLayout.arg(ExtTypes:Word,ExtTypes:Word);

ActivateKeyboardLayout.call(68748313, 0); и здесь ругается на неверное количество параметров
Старый 28.03.2006, 13:29   #18  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Цитата:
Сообщение от LiSA
Оно конечно всё красиво, но почему-то в ячейках выводится только первый элемент массива, во всех ячейках!
Сорри, я все-таки забыл , диапазон ячеек в одном столбце типа А1:А10 - это уже двумерный массив в отличии от диапазона ячеек в строке, а Аксапта такие массивы не понимает... А забыл - потому что в памяти остался тот факт, что значения в столбцы я все-таки вставлял, только двумерный массив (ComVariant) я брал из другого столбца Эксэля (т.е. копировал содержимое столбцов), в Аксапте такой ComVariant обработать, естественно, нельзя...
Старый 28.03.2006, 13:39   #19  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Цитата:
Сообщение от LiSA
А что за переменные должны быть здесь?...
В исходном тексте (http://www.axforum.info/forums/showt...1039#post41039) каждый смайлик 'съел' символы ":D"... Нужно подставить их вместо смайликов (т.е. ExtTypes::DWord).
Старый 28.03.2006, 15:34   #20  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
По поводу переключения раскладки - можно не заморачиваться с ней, а воспользоваться 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
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
Вставка строки в Excel A-Lis-A DAX: Программирование 2 27.09.2007 12:03
[Excel] - Несколько версий Excel на машине клиента Андре DAX: Программирование 11 07.08.2007 13:45
Вставка рисунка в колонтитул Excel pasha_isaev DAX: Программирование 10 09.05.2007 10:35
вставка знач. из Ax в Excel в именованую ячейку Denicce DAX: Программирование 6 15.09.2005 16:25

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:31.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.