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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.08.2017, 15:13   #1  
DAX.Company is offline
DAX.Company
Участник
 
296 / 97 (4) ++++
Регистрация: 24.11.2016
Excel.OpenXML Вставка колонтитула
Добрый день, коллеги!

Подскажите как при экспорте в Excel вставить колонтитулы. В стандарте не нашел. На форуме только про COM.
Старый 28.08.2017, 16:36   #2  
VORP is offline
VORP
Участник
Аватар для VORP
 
146 / 95 (4) ++++
Регистрация: 26.05.2006
Если создать ексель файл, добавить в него колонтитулы, сохранить, переименовать в zip, зайти внутрь, найти файл sheet1.xml.
Там будет добавлен узел вроде:
-<headerFooter>
<oddHeader xml:space="preserve">&LTEST LEFT&CTEST CENTER&RTEST RIGHT </oddHeader> <-- Это верхний колонтитул
<oddFooter>Страница &P</oddFooter> <-- Это нижний колонтитул
</headerFooter>
Надо сделать метод на классах который используя OpenXml SDK (DocumentFormat.OpenXml.Worksheet). будет создавать этот узел
За это сообщение автора поблагодарили: DAX.Company (2), Logger (1).
Старый 18.06.2020, 08:53   #3  
GrechkaIsTheBest is offline
GrechkaIsTheBest
Участник
 
2 / 20 (1) +++
Регистрация: 11.10.2010
Нужно тут было в XmlExcelReport_RU добавить колонтитулы, если кому пригодится, некоторые наработки)

X++:
class OxmlWorksheet_RU
{
    DocumentFormat.OpenXml.Spreadsheet.HeaderFooter headerFooter_NEW;
}
private void initWorksheetElements()
{
	if (oxmlElement is DocumentFormat.OpenXml.Spreadsheet.HeaderFooter)
	{
		headerFooter_NEW = oxmlElement as DocumentFormat.OpenXml.Spreadsheet.HeaderFooter;
	}
}
public void addFooter_NEW(str _text, SysAlignment _alignment = SysAlignment::AlignDefault)
{
    DocumentFormat.OpenXml.Spreadsheet.OddFooter    oddFooter;
    str                                             resultText;

    if (headerFooter_NEW)
    {
        oddFooter = headerFooter_NEW.get_OddFooter();
        if (! oddFooter)
        {
            oddFooter = new DocumentFormat.OpenXml.Spreadsheet.OddFooter();
            headerFooter_NEW.set_OddFooter(oddFooter);
        }
        resultText = oddFooter.get_Text();
        resultText += this.getAlignmentStr_NEW(_alignment) + _text;
        oddFooter.set_Text(resultText);
    }
}
public void addHeader_NEW(str _text, SysAlignment _alignment = SysAlignment::AlignDefault)
{
    DocumentFormat.OpenXml.Spreadsheet.OddHeader    oddHeader;
    str                                             resultText;

    if (headerFooter_NEW)
    {
        oddHeader = headerFooter_NEW.get_OddHeader();
        if (! oddHeader)
        {
            oddHeader = new DocumentFormat.OpenXml.Spreadsheet.OddHeader();
            headerFooter_NEW.set_OddHeader(oddHeader);
        }
        resultText = oddHeader.get_Text();
        resultText += this.getAlignmentStr_NEW(_alignment) + _text;
        oddHeader.set_Text(resultText);
    }
}
private str getAlignmentStr_NEW(SysAlignment _alignment)
{
    #define.HeaderFooterAlignmentLeft('&L')
    #define.HeaderFooterAlignmentRight('&R')
    #define.HeaderFooterAlignmentCenter('&C')

    switch (_alignment)
    {
        case SysAlignment::AlignLeft:
            return #HeaderFooterAlignmentLeft;
        case SysAlignment::AlignRight:
            return #HeaderFooterAlignmentRight;
        case SysAlignment::AlignCenter:
            return #HeaderFooterAlignmentCenter;
        default:
            return '';
    }
}

class XmlExcelReport_RU
public void addHeader_NEW(str _text, SysAlignment _alignment = SysAlignment::AlignDefault, anytype _workSheetIdOrName = '')
{
    OXMLWorksheet_RU    worksheet = document.workbook().getWorksheet(_workSheetIdOrName);

    worksheet.addHeader_NEW(_text, _alignment);
}
public void addFooter_NEW(str _text, SysAlignment _alignment = SysAlignment::AlignDefault, anytype _workSheetIdOrName = '')
{
    OXMLWorksheet_RU    worksheet = document.workbook().getWorksheet(_workSheetIdOrName);

    worksheet.addFooter_NEW(_text, _alignment);
}
За это сообщение автора поблагодарили: trud (10).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Excel .NET вставка картинки ex3em DAX: Программирование 10 23.11.2015 10:11
Вставка в Excel из TextBuffer. Кодировка Poleax DAX: Программирование 14 30.03.2011 11:16
Вставка нескольких строк из шаблона Excel breakpoint DAX: Программирование 2 04.06.2009 15:31
Вставка строки в Excel A-Lis-A DAX: Программирование 2 27.09.2007 12:03
вставка столбца в Excel Pawlik DAX: Программирование 23 29.03.2006 12:20

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

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

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