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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.02.2006, 16:57   #1  
111andrei is offline
111andrei
Участник
Самостоятельные клиенты AX
 
52 / 9 (1) +
Регистрация: 29.04.2004
Адрес: Москва
Angry Этот черный ящик EXCEL
Господа программисты!

1. Подскажите как увидеть все методы
COM Excel;
2. Есть ли метод, возвращающий кол-во страниц, в excel - файле
Старый 01.02.2006, 17:09   #2  
lagr221374
Гость
 
n/a
1 MSDN
2 сделай в ComExcelDocument_RU что-то типа
int test()
{
COM workSheets,
int ret;

if (m_comDocument)
{
workSheets = m_comDocument.worksheets();
ret = workSheets.count();
}
return ret;
}

Последний раз редактировалось lagr221374; 01.02.2006 в 17:12.
Старый 01.02.2006, 19:14   #3  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2922 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
1. OleView
см. База знаний ERP : Axapta / ActiveX про некоторые особености
Старый 01.02.2006, 19:18   #4  
111andrei is offline
111andrei
Участник
Самостоятельные клиенты AX
 
52 / 9 (1) +
Регистрация: 29.04.2004
Адрес: Москва
1 Что такое MSDN, можно поподробней
2 можно ли получить кол-во страниц, в excel - файле через свой класс, например

static void test(Args _args)
{
COM Excel;
com workBook;
str _fileName;
;
_fileName = "C:\\test.xls";
excel = new COM("Excel.Application");
workBook = excel.WorkBooks();
workBook.Open(_fileName);
}
а вот дальше...
Старый 01.02.2006, 19:19   #5  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2922 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
2. Коллекция worksheets это количество листов (т.е. закладок лист1 лист2 и т.д.) страницы - это, наверное, PageBreaks. Вот нашел поиском в гугле:
Excel VBA: Determine Number of Pages to be Printed. Count of Printed Pages Before Printing
Старый 01.02.2006, 19:20   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2922 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
http://msdn.microsoft.com
Старый 01.02.2006, 19:37   #7  
odr is offline
odr
Участник
 
35 / 22 (1) +++
Регистрация: 19.04.2005
Адрес: Москва
Для грамотного пользования COM Excel (Word, Access и пр.) очень полезно разобраться в объектной модели используемых приложений. Для этого, как уже говорили, можно использовать MSDN. Проще всего для изучения использовать VB (VBA). Для поиска функций, нужных непосредственно вам, есть такой прием: Начинаете запись макроса в Excel (Word), руками делаете то, что хотите получить, а потом в редакторе VBA смотрите сгенерированный код и разбираетесь. При необходимости используете в Axе...
Старый 01.02.2006, 20:40   #8  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Всецело поддерживаю odr!

Быстрое начало знакомства с объектной моделью Excel может выглядеть примерно так:
1. Запускаем Excel (для наглядности лучше, чтобы была открыта только голая новая Книга1).
2. Сервис -> Макрос -> Начать запись -> OK.
3. Вводим в ячейку A1 цифру 1.
4. Кнопка "Остановить запись" на тулбаре (или Сервис -> Макрос -> Остановить запись).
5. Alt+F11 (или Сервис -> Макрос -> Редактор Visual Basic).
6. В редакторе в обозревателе проектов: VBAProject(Книга1) -> Modules -> Module1 (дабл-клик).
7. В тексте открывшейся нашей только что записанной процедуры кликнули слово Range и нажали F1.
8. И понеслись по прекрасно организованному HELP-у (иех, когда ж так вкусно будет в Аксапте? )
9. Если хотите увидеть модель в красивом виде, то введите в начало процедуры строку: Dim e As Excel.Application
10.Кликнете в ней слово Excel и нажмите F1 - откроется сочная картинка "Microsoft Excel Objects".
11.И, немного освоившись, можно еще в редакторе нажать F2 (или View -> Object Browser) - тоже очень полезная вещь.

Старый 02.02.2006, 21:02   #9  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Буквально несколько слов вдогонку.

Поищите у себя на компьютере файлы по маске MSOWC*.*

MSOWCDSS.CHM - это описание пользовательского интерфейса SpreadSheet-а, т.е. что юзер может ручками поделать (причем, описание на русском языке в русской версии).
MSOWCVBA.CHM - VBA-шный справочник по программированию; там есть красивая картинка "Spreadsheet Object Model" (это уже, как обычно, на английском).

Можно поразглядывать также другие найденные файлы.

P.S. Гы! Хотя я, наверное, несколько перепутал темы... в смысле влез со SpreadSheet-ом в Excel-ный топик - ну да ладно

Последний раз редактировалось Gustav; 02.02.2006 в 21:07.
Старый 29.06.2006, 11:50   #10  
Davido is offline
Davido
Участник
 
4 / 11 (1) +
Регистрация: 10.11.2004
Адрес: Moscow
искала ответ на 2ой вопрос, но тут его не нашла
в итоге в класс ComExcelDocument_RU добавила метод возвращающий количество СТРАНИЦ на указанном листе:
Цитата:
int getPageCnt(int _workSheet)
{
COM comWorkSheet, comHPageBreak;
COM pageBreakRange;
int totalPageBreakCount;
;

comWorkSheet = this.getWorkSheet(_workSheet);

comHPageBreak = comWorkSheet.hPageBreaks();

totalPageBreakCount = comHPageBreak.count();

return totalPageBreakCount+1;
}
Старый 29.06.2006, 12:32   #11  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от Davido
в итоге в класс ComExcelDocument_RU добавила метод возвращающий количество СТРАНИЦ на указанном листе
извините за наивный вопрос: а зачем нужно знать кол-во страниц на листе? (Что-нибудь, связанное с планированием расхода бумаги? )
(не сочтите за издёвку, правда любопытно)
Старый 29.06.2006, 12:57   #12  
itfs is offline
itfs
Участник
 
277 / 43 (2) +++
Регистрация: 18.07.2005
Адрес: Moscow
Кол-во страниц для некоторых является своеборазной гарантией целостности документа. Со времен бумаготворчества осталось.

С уважением, itfs.
Старый 29.06.2006, 13:25   #13  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от itfs
Кол-во страниц для некоторых является своеборазной гарантией целостности документа. Со времен бумаготворчества осталось.
Да, возможно. Такой гарантией может быть, например, прописывание на каждой распечатываемой странице в нижнем колонтитуле строки типа "Стр. 2 из 15".
Но для этого не нужно задействовать HPageBreaks.Count, проще и надежнее поручить это делать самому Ёкселю - как-нибудь вот так:
Код:
COM wks; // Worksheet
..............
COM::createFromObject( wks.PageSetup() ).CenterFooter('Стр. &P из &N');
А HPageBreaks - семейство весьма капризное, как мне показалось. Как-то пришлось повозиться, так просто съехали крыши - и у меня, и у Ёкселя... С этими мануальными и автоматическими границами страницы... Помню, состояние было достаточно удручающее - и до конца не победил... как-то по-другому объехал...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
gl00mie: Read Excel table via ADO Blog bot DAX Blogs 2 09.04.2010 08:32
[Excel] - Несколько версий Excel на машине клиента Андре DAX: Программирование 11 07.08.2007 13:45
Вызов Item() для коллекций Excel Владимир Максимов DAX: Программирование 15 17.08.2006 19:47
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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