Что вы делаете, это фактически создание HTML-файла и предоставление ему расширения, которое Word знает для открытия. Вы не создаете настоящий файл .DOC, но Word распознает HTML и отобразит его.
Я подозреваю, что вкус HTML, который он ищет, идентичен вкусу, который он сохраняет. Поэтому я создал новый документ в Word 2013, добавил верхние и нижние колонтитулы и сохранил его как HTML-файл. После проверки HTML-файла кажется, что Word оставляет их. Поэтому я сомневаюсь, что есть способ указать верхние и нижние колонтитулы в файлах HTML, которые он открывает.
Что вы можете сделать, это переключиться на создание реальных файлов MS Word. Они будут иметь лучшую поддержку для различных клиентов Word и эквивалентов Word (таких как версии для Mac, мобильные версии и Libre Office).
Micrsoft предоставляет библиотеку для генерации файлов .DOCX под названием Open XML SDK. Тем не менее, я нашел, что немного сложно использовать.
Я лично использовал DocX несколько раз. Вот как бы сделать это с этой библиотекой (код взят из this blog post):
C#
// Create a new document.
using (DocX document = DocX.Create(@"Test.docx"))
{
// Add Header and Footer support to this document.
document.AddHeaders();
document.AddFooters();
// Get the default Header for this document.
Header header_default = document.Headers.odd;
// Get the default Footer for this document.
Footer footer_default = document.Footers.odd;
// Insert a Paragraph into the default Header.
Paragraph p1 = header_default.InsertParagraph();
p1.Append("Hello Header.").Bold();
// Insert a Paragraph into the document.
Paragraph p2 = document.InsertParagraph();
p2.AppendLine("Hello Document.").Bold();
// Insert a Paragraph into the default Footer.
Paragraph p3 = footer_default.InsertParagraph();
p3.Append("Hello Footer.").Bold();
// Save all changes to this document.
document.Save();
}// Release this document from memory.
VB.NET (в переводе Telerik, потому что я не знаю, VB.NET)
' Create a new document.
Using document As DocX = DocX.Create("Test.docx")
' Add Header and Footer support to this document.
document.AddHeaders()
document.AddFooters()
' Get the default Header for this document.
Dim header_default As Header = document.Headers.odd
' Get the default Footer for this document.
Dim footer_default As Footer = document.Footers.odd
' Insert a Paragraph into the default Header.
Dim p1 As Paragraph = header_default.InsertParagraph()
p1.Append("Hello Header.").Bold()
' Insert a Paragraph into the document.
Dim p2 As Paragraph = document.InsertParagraph()
p2.AppendLine("Hello Document.").Bold()
' Insert a Paragraph into the default Footer.
Dim p3 As Paragraph = footer_default.InsertParagraph()
p3.Append("Hello Footer.").Bold()
' Save all changes to this document.
document.Save()
End Using
' Release this document from memory.
Обратите внимание, что приведенный выше код был взят из сообщения в блоге, написанного в 2010 году. Библиотека, вероятно, изменилась за шесть лет.
Вы попробовали Response.AppendHeader –
Ну, я думаю, что response.header предназначен для мета-заголовка файла, а не для заголовка фактического файла. Если у вас есть какой-нибудь пример, пожалуйста, покажи мне. –
Фактически вы не экспортируете файл слов. Вы экспортируете HTML и сохраняете его в файл .doc, чтобы обмануть Word, чтобы открыть его. Вам нужно будет использовать специальные атрибуты и элементы HTML MS Word, чтобы выполнить то, что вы хотите. Самый простой способ - создать документ Word с верхним и нижним колонтитулом, а затем сохранить его как файл HTML. Или рассмотреть возможность переключения на библиотеку, которая генерирует реальные файлы Word, такие как Open XML SDK или DocX. Файлы, генерирующие ваш файл, скорее всего, путают Word-клиенты, которые не ожидают HTML в файле .doc. – mason