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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.02.2021, 21:42   #1  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
EPPlus + DAX2009: то ли оно глючит, то ли я...
Рисуем рамочки.

Это из EPPlus Tutoroal-а:

X++:
using (ExcelRange range = worksheet.Cells["A1:H1"])
            {
                range.Style.Font.Bold = true;
                range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
                range.Style.VerticalAlignment = ExcelVerticalAlignment.Center;
                range.Style.Fill.PatternType = ExcelFillStyle.Solid;
                range.Style.Fill.BackgroundColor.SetColor(Color.White);

                range.Style.Border.Top.Style = ExcelBorderStyle.Thin;
                range.Style.Border.Top.Color.SetColor(Color.Red);
                range.Style.Border.Left.Style = ExcelBorderStyle.Thin;
                range.Style.Border.Left.Color.SetColor(Color.Green);
                range.Style.Border.Right.Style = ExcelBorderStyle.Thin;
                range.Style.Border.Right.Color.SetColor(Color.Green);
                range.Style.Border.Bottom.Style = ExcelBorderStyle.Thin;
                range.Style.Border.Bottom.Color.SetColor(Color.Green);
            }
Вот это - мое:

X++:
public void setBorder(MSOfficeBookMark_RU _bookmark)
{
    #define.MEDIUM  (11)
    OfficeOpenXml.ExcelNamedRange               excelNamedRange = this.findRange(_bookmark);
    OfficeOpenXml.Style.ExcelStyle              excelRangeStyle;
    OfficeOpenXml.Style.Border                  excelBorder;
    OfficeOpenXml.Style.ExcelBorderItem         top;
    ;

    new InteropPermission(InteropKind::ClrInterop).assert();

    excelRangeStyle     = excelNamedRange.get_Style();
    excelBorder         = excelRangeStyle.get_Border();
    top                 = excelBorder.get_Top();

    top.set_Style(#MEDIUM);   

    CodeAccessPermission::revertAssert();
}
На set_Style(#MEDIUM) Акса ругается, что нет такого метода в классе. Хотя метод - есть:



И что я делаю не так, интересно?
__________________
Best Regards,
Roman
Старый 23.02.2021, 21:51   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от RVS Посмотреть сообщение
На set_Style(#MEDIUM) Акса ругается, что нет такого метода в классе. Хотя метод - есть:

в .net параметр с типом int не совместим с параметром с типом enum.
нужно писать что-то такое:

X++:
top.set_Style(<EppNameSpace>.ExcelBorderStyle::Thin);
где <EppNameSpace> - полный namespace перечисления
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: RVS (3).
Старый 23.02.2021, 21:57   #3  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Спасибо, так работает.
__________________
Best Regards,
Roman
Старый 25.02.2021, 11:03   #4  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Еще один вопрос (собственно, по библиотеке EPPlus, а не по аксе, но вдруг кто знает правильный ответ): как бы созданный EPPlus "Excel" открыть (и показать на экране), не сохраняя файл на диск?

Интернет рыл, но кроме упоминания MemoryStream, ничего не нашел. А как (и можно ли вообще) подсунуть этот MemoryStrem Excel-ю вместо файла *.xltx - не понимаю ((
__________________
Best Regards,
Roman
Старый 25.02.2021, 12:59   #5  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Цитата:
Сообщение от RVS Посмотреть сообщение
подсунуть этот MemoryStrem Excel-ю вместо файла *.xltx
В данном случае под экселем наверное понимается Microsoft.Office.Interop.Excel ? Оно не работает с MemoryStream
Мне тоже интересно можно ли сформировать отчёт excel и отобразить его на экране без обращения к файловой системе.
__________________
Дмитрий
Старый 25.02.2021, 18:31   #6  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Цитата:
Сообщение от Damn Посмотреть сообщение
В данном случае под экселем наверное понимается Microsoft.Office.Interop.Excel ?
Ну, например, именно оно )

Цитата:
Сообщение от Damn Посмотреть сообщение
Оно не работает с MemoryStream
Да, оно так не умеет, к сожалению.

Чуть обобщу задачу:

- на момент формирования *.xslx Ексель,как таковой,не присутствует
- что, помимо сохранения в файл, можно присоветовать, чтобы поднять Ексель со сформированными данными?
__________________
Best Regards,
Roman

Последний раз редактировалось RVS; 25.02.2021 в 18:36.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вызов SOAP сервиса из DAX2009 без использования references - есть ли примеры в стандартном приложении Raven Melancholic DAX: Программирование 5 23.04.2017 14:45
Производительность и надежность Workflow в DAX2009 db DAX: Функционал 25 30.01.2013 12:20
DAX2009 не дружит с VS2010 oleg_e DAX: Администрирование 2 17.06.2010 10:34
Вопросы по OLAP в DAX2009 oleg_e DAX: Функционал 9 10.12.2008 02:02
Меня глючит или где? Shrike DAX: Программирование 7 29.05.2003 17:32
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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