24.03.2006, 17:01 | #1 |
Участник
|
вставка столбца в Excel
Кто-нибудь пробовал вставить целый столбец в Excel
есть метод COMExcelDocument_RU::numToNameCol() но мне не удалось им овладеть - все ошибки. Покажите, пожалуйста, кусок кода с применением этого метода! |
|
24.03.2006, 17:36 | #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(); } |
|
24.03.2006, 17:40 | #3 |
Участник
|
я имел ввиду столбец с данными
COMExcelDocument_RU::numToNameCol() используется для вставки данных. Я формирую массив и хочу его разом загнать в столбец в Excel |
|
24.03.2006, 17:43 | #4 |
Участник
|
Цитата:
Сообщение от Pawlik
я имел ввиду столбец с данными
COMExcelDocument_RU::numToNameCol() используется для вставки данных. Я формирую массив и хочу его разом загнать в столбец в Excel |
|
24.03.2006, 17:48 | #5 |
Участник
|
Там показана вставка в строки методом COMExcelDocument_RU::numToNameCell
и через буфер, а мне в столбец надо методом COMExcelDocument_RU::numToNameCol() у этих методов различаются количество параметров и вроде передаю все нормально, а ругается, поэтому я спрашиваю рабочий код. |
|
24.03.2006, 17:52 | #6 |
NavAx
|
COMExcelDocument_RU::numToNameCell конвертирует номер ячейки состоящий из номера строки и столбца в понятные экселю. Пример: (1, 1) --> A1
|
|
24.03.2006, 17:55 | #7 |
Участник
|
Хорошо а что делает COMExcelDocument_RU::numToNameCol()
|
|
24.03.2006, 18:41 | #8 |
Участник
|
Цитата:
Сообщение от Pawlik
Хорошо а что делает COMExcelDocument_RU::numToNameCol()
Спросите у тех, кто этот метод навесил в COMExcelDocument_RU У меня, например, такого метода нет, Axapta 3.0 SP3 CU1. |
|
24.03.2006, 18:46 | #9 |
Участник
|
у меня есть: Axapta 2.5 sp5
видно не зря убрали |
|
25.03.2006, 10:33 | #10 |
Участник
|
Судя по названию, этот метод переводит номер столбца в его имя, т.е. 1 -> A, 2 ->B и т.д.
|
|
28.03.2006, 11:06 | #11 |
Участник
|
Господа, добрый день! Подскажите, кто-нибудь решал проблему вставки целого столбца с данными в Excel из Axapta? Реализовал данный метод через буфер обмена (смысл такой, что в конце каждого элемента добавлял символ с кодом 13, то бишь Enter). Всё работает, но есть две проблемы: первая, русские символы выводятся коряво и вторая, хотелось бы реализовать не использовав буфер, НО КАК? Если есть какие-либо идеи подскажите!!!! ПЛИЗ!!!!!
Последний раз редактировалось LiSA; 28.03.2006 в 11:30. |
|
28.03.2006, 11:40 | #12 |
Участник
|
Цитата:
Сообщение от LiSA
первая, русские символы выводятся коряво
|
|
28.03.2006, 11:43 | #13 |
Участник
|
Цитата:
Сообщение от KMV
Нужно программно установить русскую раскладку клавиатуры. Как это сделать можно посмотреть тут.
|
|
28.03.2006, 11:53 | #14 |
Developer
|
Цитата:
Сообщение от LiSA
хотелось бы реализовать не использовав буфер, НО КАК? Если есть какие-либо идеи подскажите!!!! ПЛИЗ!!!!!
Код: doc.findRange(strfmt("A%1:A%2", CurRow, CurRow+Arr.lastIndex())).value2(COMVariant::createFromArray(Arr)); |
|
28.03.2006, 12:16 | #15 |
Участник
|
Цитата:
Сообщение от vallys
Можно так, изменив предпоследнюю строку, например, на
Код: doc.findRange(strfmt("A%1:A%2", CurRow, CurRow+Arr.lastIndex())).value2(COMVariant::createFromArray(Arr)); |
|
28.03.2006, 13:01 | #16 |
Участник
|
Цитата:
Сообщение от vallys
Можно так, изменив предпоследнюю строку, например, на
Код: doc.findRange(strfmt("A%1:A%2", CurRow, CurRow+Arr.lastIndex())).value2(COMVariant::createFromArray(Arr)); Оно конечно всё красиво, но почему-то в ячейках выводится только первый элемент массива, во всех ячейках! |
|
28.03.2006, 13:05 | #17 |
Участник
|
Цитата:
Сообщение от KMV
Нужно программно установить русскую раскладку клавиатуры. Как это сделать можно посмотреть тут.
ActivateKeyboardLayout.returns(ExtTypes:Word); ActivateKeyboardLayout.arg(ExtTypes:Word,ExtTypes:Word); ActivateKeyboardLayout.call(68748313, 0); и здесь ругается на неверное количество параметров |
|
28.03.2006, 13:29 | #18 |
Developer
|
Цитата:
Сообщение от LiSA
Оно конечно всё красиво, но почему-то в ячейках выводится только первый элемент массива, во всех ячейках!
|
|
28.03.2006, 13:39 | #19 |
Developer
|
Цитата:
Сообщение от LiSA
А что за переменные должны быть здесь?...
|
|
28.03.2006, 15:34 | #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 |
|