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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.10.2008, 19:48   #32  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Размышляя, набросал тут 3 демонстрационных цикла вывода в Excel (чуть позже добавил четвертый):
X++:
static void Job_TestFourLoops(Args _args)
{
    ComExcelDocument_RU doc = new ComExcelDocument_RU();

    COM     xlApp;
    COM     wbook;
    COM     range, range1, range2;
    int     i;

    #define.xlDown(-4121)
    #define.xlPasteFormats(-4122)
    ;

    doc.NewFile();

    wbook = doc.getComDocument();
    xlApp = wbook.Parent();

// ВАРИАНТ 1
    // тестовая подготовка первой ячейки с именем и форматом
    range = xlApp.Range('B3');
    range.Name('test');
    COM::createFromObject( range.Font() ).Bold(true);

    // все время писать в test, смещая его вниз за счет вставки строк
    // и перекидывая формат на ячейку выше
    for (i=1;i<=10;i++)
    {
        doc.insertValue('test', i);
        doc.copyAndInsertRange('test');
    }
    doc.insertValue('test','');

// ВАРИАНТ 2
    // тестовая подготовка первой ячейки с именем и форматом
    range = xlApp.Range('B15');
    range.Name('test2');
    COM::createFromObject( range.Interior() ).ColorIndex(36);

    // прописывание значений
    range = xlApp.Range('test2'); // как если бы букмарк уже существовал в файле

    for (i=1;i<=10;i++)
    {
        // в цикле только пишем значения, не форматируем
        // адрес зависит от счетчика цикла
        range1 = COM::createFromVariant( range.Item(i,1) );
        doc.insertValue( range1.Address() ,i);
    }

    // в конце скопировать формат первой ячейки на все остальные
    range2 = xlApp.Range(range, range.End(#xlDown));
    range.Copy();
    range2.PasteSpecial(#xlPasteFormats);
    xlApp.CutCopyMode(false);


// ВАРИАНТ 3
    // тестовая подготовка первой ячейки с именем и форматом
    range = xlApp.Range('B27');
    range.Name('test3');
    COM::createFromObject( range.Font() ).Bold(true);
    COM::createFromObject( range.Interior() ).ColorIndex(5);

    // прописывание значений
    range = xlApp.Range('test3'); // как если бы букмарк уже существовал в файле

    range1 = range;
    for (i=1;i<=10;i++)
    {
        // в цикле только пишем значения, не форматируем
        // адрес не зависит от счетчика цикла
        doc.insertValue( range1.Address(), i);
        range1 = range1.Offset(1,0);
    }

    // в конце скопировать формат первой ячейки на все остальные
    range2 = xlApp.Range(range, range.End(#xlDown));
    range.Copy();
    range2.PasteSpecial(#xlPasteFormats);
    xlApp.CutCopyMode(false);

// ВАРИАНТ 4
    // тестовая подготовка первой ячейки с именем и форматом
    range = xlApp.Range('B39');
    range.Name('test4');
    COM::createFromObject( range.Borders() ).LineStyle(1);
    COM::createFromObject( range.Font() ).Bold(true);

    // прописывание значений
    range = xlApp.Range('test4');

    for (i=1;i<=10;i++)
    {
        // вставляем выше 'test4' строку с форматированием
        doc.copyAndInsertRangeNew('test4');

        // получаем объектную переменную для строки на одну выше 'test4'
        range1 = range.Offset(-1,0);

        // пишем в строку выше 'test4'
        doc.insertValue( range1.Address(), i);

        // range c 'test4' на каждом шаге опускается ниже и ниже
        // а range1 следует за ним строкой выше, олицетворяя собой новую вставленную строку
        // которая рождается с исходными (пустыми) значениями 'test4', а потом переписывается текущими
    }
    // в конце остается пустая строка с 'test4', которую можно удалить
    doc.deleteRow(range.Row());
}
Теги
excel, документация, как правильно, ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
как вывести номер строки в гриде? funnut DAX: Программирование 21 01.10.2012 16:33
Цветные строки в Grid Sergo DAX: База знаний и проекты 14 19.04.2012 10:02
При создании строки в закупке статус строки становится "Отменено" AlexUnik DAX: Функционал 4 27.09.2004 16:05
Буферные ячейки на складе - зачем? renat DAX: Функционал 16 01.04.2004 20:22
Функция "Удалить строки" Oks DAX: Функционал 1 03.07.2002 18:09

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:06.