2012-05-10 9 views
0

EDIT: Есть еще одна деталь, которую я оставил с моим оригинальным сообщением. Программа использует поток шаблонов, а не конкретный шаблон для команды «.Open». Поток шаблон инициализируется с этим блоком кода:Добавить нижний колонтитул в существующую таблицу OpenXML

public void Initialize(Stream templateStream) 
{ 
    spreadsheet = SpreadsheetDocument.Open(templateStream, true); 
} 

Я до сих пор исследования, но кто-нибудь знает последствия использования потока для объекта HeaderFooter в OpenXML?

Я новичок в OpenXML и все еще в процессе чтения и изучения того, что могу от этого массивного SDK. Я унаследовал программу C# MVC.NET, которая использует OpenXML для отображения информации в электронной таблице Excel, и все это работает, но теперь мне нужно добавить нижний колонтитул к той же электронной таблице, и я поражаю некоторые кирпичные стены в своем OpenXML знание.

Я положил информацию колонтитула я хотел в электронную таблицу, открыл его с Open XML SDK Productivity Tool и нашел этот код под < .x: oddFooter (OddFooter):

// Creates an OddFooter instance and adds its children. 
     public OddFooter GenerateOddFooter() 
     { 
      OddFooter oddFooter1 = new OddFooter(); 
      oddFooter1.Text = "&L&\"Times New Roman,Regular\"Page &P of &N&C&\"Times New Roman,Regular\"Generated On: <Date/Time> Central&R&\"Times New Roman,Regular\"Report"; 
      return oddFooter1; 
     } 

И этот код один выравнивать под <> х: HeaderFooter (OddFooter):

// Creates an HeaderFooter instance and adds its children. 
     public HeaderFooter GenerateHeaderFooter() 
     { 
      HeaderFooter headerFooter1 = new HeaderFooter(); 
      OddFooter oddFooter1 = new OddFooter(); 
      oddFooter1.Text = "&L&\"Times New Roman,Regular\"Page &P of &N&C&\"Times New Roman,Regular\"Generated On: <Date/Time> Central&R&\"Times New Roman,Regular\"Report"; 

      headerFooter1.Append(oddFooter1); 
      return headerFooter1; 
     } 

Теперь я, конечно, нужно добавить информацию колонтитула где-то, и это, где я застрял. В <> х: лист (Worksheet) Я вижу эту строку кода:

worksheet1.Append(headerFooter1); 

Это выглядело достаточно легко, но когда я посмотрел на код приложения, я не нашел объект рабочего листа, добавляемых к. Я думал, что был близок со следующей строкой кода:

spreadsheet.WorkbookPart.Workbook.Append(headerFooter1); 

но это ничего не давало. В приложении я вижу объект SpreadsheetDocument и ссылки на OpenXMLParts ... мне нужно получить часть электронной таблицы для добавления? Или мне нужно использовать другой подход с таблицей в сравнении с объектом рабочей таблицы? Нужно ли мне материализовать текущий рабочий лист, а затем добавить?

У меня такое чувство, что это простое решение, но, как я уже сказал, я все еще изучаю SDK.

Спасибо!

ответ

0

Для тех, кто не знает о производительности инструмента, он входит в комплект SDK и может быть загружена с https://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=5124

На моей разрядной машине 64, установочный путь к инструменту был: «C: \ Program Files (x86) \ Open XML SDK \ V2.0 \ tool \ OpenXmlSdkTool.exe "

Вы должны иметь возможность вручную добавить нижний колонтитул в электронную таблицу и открыть его с помощью инструмента и увидеть точный C# требуется для создания всей электронной таблицы, включая нижний колонтитул. Затем вы можете удалить ненужные части кода, например, некоторые из стилей, которые автоматически добавляются.

Смежные вопросы