Как я могу написать HTML в документе Word? - PullRequest
1 голос
/ 28 сентября 2011

Как я могу написать HTML в документе Word, используя C #?

Я сделал класс, чтобы помочь написать документ

using System;
using System.IO;
using Microsoft.Office.Interop.Word;

namespace WordExporter
{
    public class WordApplication : IDisposable
    {
        private Application application;
        private Document document;

        private string path;
        private bool editing;

        public WordApplication(string path)
        {
            this.path = path;
            this.editing = File.Exists(path);

            application = new Application();

            if (editing)
            {
                document = application.Documents.Open(path, ReadOnly: false, Visible: false);
            }
            else
            {
                document = application.Documents.Add(Visible: false);
            }
            document.Activate();
        }

        public void WriteHeader(string text)
        {
            foreach (Section wordSection in document.Sections)
            {
                var header = wordSection.Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;

                header.Font.ColorIndex = WdColorIndex.wdDarkRed;
                header.Font.Size = 20;
                header.Text = text;
            }
        }

        public void WriteFooter(string text)
        {
            foreach (Section wordSection in document.Sections)
            {
                var footer = wordSection.Footers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;

                footer.Font.ColorIndex = WdColorIndex.wdDarkRed;
                footer.Font.Size = 20;
                footer.Text = text;
            }
        }

        public void Save()
        {
            if (editing)
            {
                application.Documents.Save(true);
            }
            else
            {
                document.SaveAs(path);
            }
        }

        #region IDisposable Members

        public void Dispose()
        {
            ((_Document)document).Close(SaveChanges: true);
            ((_Application)application).Quit(SaveChanges: true);
        }

        #endregion
    }

    class Program
    {
        static void Main(string[] args)
        {
            using (var doc = new WordApplication(Directory.GetCurrentDirectory() + "\\test.docx"))
            {
                doc.WriteHeader("<h1>Header text</h1>");
                doc.WriteFooter("<h1>Footer text</h1>");
                doc.Save();
            }
        }
    }
}

В WriteHeader я пишу текст в заголовке документа, но мне нужно использовать HTML. Как я могу сказать, что содержимое HTML? Мне также нужно будет вставить HTML в содержание документа ...

1 Ответ

0 голосов
/ 28 сентября 2011

Я могу просто вставить файл html в нужный раздел:

range.InsertFile("file.html");
...