25.11.2004, 08:37 | #1 |
Участник
|
Интегрирование листа Excel в форму
Здравствуйте.
Скажите, а как-нибудь можно интегрировать лист Excel в форму Axapta. Вариант ActiveX.MS Spreadsheet не подходит. Спасибо. |
|
25.11.2004, 09:10 | #2 |
Участник
|
Если не ActiveX.MS Spreadsheet, то как вы бы сделали это в любой другой программе?
Анекдот: Мужик приходит в роддом. Спрашивает: - У моей мальчик родился? - Нет. - А кто? |
|
25.11.2004, 09:40 | #3 |
Участник
|
Мне нужно в этом листе готовый шаблон открыть. Как это сделать?
Также, как делаю в Excel - не получается (объект немного другой). И еще не выходит сделать группировку строк, а очень хотелось бы. |
|
25.11.2004, 10:44 | #4 |
Участник
|
Можно я попрошу вас задачу полностью повторить?
Я понял следующее. Вам надо: = интегрировать лист Excel в форму Axapta = в этом листе готовый шаблон открыть = сделать группировку строк Я не понимаю как эти три пункта связаны в одну задачу и как они связаны с ограничением на неиспользование ActiveX.MS Spreadsheet. |
|
25.11.2004, 11:40 | #5 |
Участник
|
Все верно.
Проблема в том, что не получается: ни открыть шаблон, ни сгруппировать строки. А насчет spreadsheet... Тут, наверное, я зря грешу. Самое главное - сделать два вышеописанных действия... |
|
25.11.2004, 13:05 | #6 |
Участник
|
а что говорит справка в MS Excel по этому поводу?
|
|
25.11.2004, 13:19 | #7 |
Участник
|
Дело в том, что когда я делаю группировку из Аксапты непосредственно в Excel - все проходит на "Ура". А когда то же самое првожу для Spreadsheet - выдается сообщение типа "COM объект не имеет данного метода". То же самое и с открытием шаблона.
|
|
25.11.2004, 13:32 | #8 |
Участник
|
Странно. Но это надо проверять.
Можете проект сюда выложить? Какая версия Офиса? |
|
25.11.2004, 13:43 | #9 |
Участник
|
Office XP / Microsoft Office Spreadsheet 10.0
Проект выложить не могу. Вот метод, который делает группировку для Spreadsheet: X++: void groupRows(int _fromRow, int _toRow) { COM range; ; range = comObject.Range(strFmt("%1:%2", _fromRow, _toRow)); range.select(); range.group(); } А вот тот же метод, но для Excel (работает в классе COMExcelDocument_RU): X++: void groupRows(int _fromRow, int _toRow, int _WorkSheet = 1) { COM comRows; ; if (! m_comDocument) throw error(strFmt("@DIS6401", this.getApplicationName())); comRow = this.findRange(strFmt("%1:%2", _fromRow, _toRow), _WorkSheet); comRow.select(); comRow.group(); } ЗЫ: Как оформлять код на форуме - не знаю. Поэтому запихнул as is. |
|
05.11.2005, 09:45 | #10 |
Developer
|
Тема ОЧЕНЬ интересная.
Пожалуйста, у кого есть это решение, огромная просьба, выложить в форум... Я определенно точно знаю, что она у кого-нибудь точно есть, но что-то всем жалко! |
|
05.11.2005, 15:24 | #11 |
Пенсионер
|
Похоже там надо достучаться сначала до коллекции "Commands" а потом до конкретной комманды через метод Item(i)? тока вот не получается что-то.
Вместо объекта OCCommands возвращается объект ISpreadsheet и как его побороть не знаю
__________________
Законы природы еще никто не отменял! А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
05.11.2005, 21:54 | #12 |
Administrator
|
Шаблон можно загрузить. Просто предварительно его нужно сохранить в формате XML (в Excel), а Spreadsheet у дать команду XMLURL примерно так:
X++: spreadSheet.xmlURL('c:\\КаталогШаблона\\МойШаблон.xml'); А вот с группировками надо посмотреть - вполне возможно что это одно из ограничений SpreadSheet
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: Oz (1). |
07.11.2005, 11:30 | #13 |
Developer
|
Работа с интерфейсом SpreadSheed (ActiveX на форме)
В общем, столкнулся я с такой проблемой...
Посадил на форму Spreadsheet (Имя - Report), все просто super Код: void clicked() { COM activeSheet; COM range; COM rangeTo; XMLDocument header; XMLDocument footer; ; super(); activeSheet = Report.ActiveSheet(); // пишу ему... range = activeSheet.range("B2:F2"); header = range.xmlData(); range.clear(); rangeTo = activeSheet.range("B3:F3"); footer = rangeTo.xmlData(); rangeTo.clear(); range.xmlData(footer); rangeTo.xmlData(header); } Хотелось бы загрузить XML-шаблон и распарсить его на XML-куски а-ля header, footer и т.д. важно разодрать xml-ник на куски. |
|
07.11.2005, 11:53 | #14 |
Участник
|
А разве у Range есть метод xmlData()?
Кроме того такое присваивание неправильно X++: header = range.xmlData(); надо так X++: header = new XMLDocument();
header.loadXml(Report.xmlData());
__________________
Axapta v.3.0 sp5 kr2 |
|
07.11.2005, 11:57 | #15 |
Участник
|
судя по тому, что написано в XSLT to transform Excel XML spreadsheet to CSV or HTML table - The Code Project - SOAP and XML надо делать так
PHP код:
|
|
07.11.2005, 15:11 | #16 |
Administrator
|
OFF: Сообщение модератора
Тема объединена с обсуждением "Работа с интерфейсом SpreadSheed (ActiveX на форме)" по причине их взаимосвязанности.
Приношу извинения, если кому-то доставил этим неудобства.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
21.01.2009, 17:56 | #17 |
Участник
|
|
|
22.01.2009, 09:00 | #18 |
Moderator
|
SpreadSheet - не d, a t на конце. Только что поиск по этому слову вернул мне 40 тем.
По интерфейсу этого COM-объекта: Цитата:
Сообщение от Gustav
Поищите у себя на компьютере файлы по маске MSOWC*.*
MSOWCDSS.CHM - это описание пользовательского интерфейса SpreadSheet-а, т.е. что юзер может ручками поделать (причем, описание на русском языке в русской версии). MSOWCVBA.CHM - VBA-шный справочник по программированию; там есть красивая картинка "Spreadsheet Object Model" (это уже, как обычно, на английском). Можно поразглядывать также другие найденные файлы. |
|
17.04.2009, 11:05 | #19 |
Участник
|
Цитата:
Сообщение от sukhanchik
Шаблон можно загрузить. Просто предварительно его нужно сохранить в формате XML (в Excel), а Spreadsheet у дать команду XMLURL примерно так:
X++: spreadSheet.xmlURL('c:\\КаталогШаблона\\МойШаблон.xml'); А вот с группировками надо посмотреть - вполне возможно что это одно из ограничений SpreadSheet а уже когда в аксапте открываю через activex он просто открывается как табличка, а не сводная таблица. как можно сделать чтобы сводная тоже сохранилась и открылась? |
|
17.04.2009, 12:02 | #20 |
MCTS
|
Цитата:
все это проделал. но проблема в том что у меня в этом файле настроен куб(сводная таблица).
а уже когда в аксапте открываю через activex он просто открывается как табличка, а не сводная таблица. как можно сделать чтобы сводная тоже сохранилась и открылась? X++: ActiveX.Navigate("C:\\Documents and Settings\\___.xls") ; |
|
|
За это сообщение автора поблагодарили: propeller (1). |
Теги |
activex, excel, spreadsheet |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|