28.08.2017, 15:13 | #1 |
Участник
|
Excel.OpenXML Вставка колонтитула
Добрый день, коллеги!
Подскажите как при экспорте в Excel вставить колонтитулы. В стандарте не нашел. На форуме только про COM. |
|
28.08.2017, 16:36 | #2 |
Участник
|
Если создать ексель файл, добавить в него колонтитулы, сохранить, переименовать в zip, зайти внутрь, найти файл sheet1.xml.
Там будет добавлен узел вроде: -<headerFooter> <oddHeader xml:space="preserve"><EST 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 |
Участник
|
Нужно тут было в 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 вставка картинки | 10 | |||
Вставка в Excel из TextBuffer. Кодировка | 14 | |||
Вставка нескольких строк из шаблона Excel | 2 | |||
Вставка строки в Excel | 2 | |||
вставка столбца в Excel | 23 |
|