Сохранить / преобразовать .doc как .html с помощью Visual Studio 2010 Express - PullRequest
6 голосов
/ 28 марта 2012

У меня есть папка с текстовыми документами, которую я хочу преобразовать в html для дальнейшей обработки. У меня есть только Visual Studio 2010 Express Edition. Возможно ли использовать экспресс-издание? Я нашел примеры того, как выполнить преобразование, но для них требуется библиотека Microsoft.Office.Tools.Word, которая не входит в состав Express.

РЕДАКТИРОВАТЬ: я обнаружил, что это на самом деле в COM-объект под названием Microsoft Word 12.0 Object Library, который является пространством имен Microsoft.Office.Interop.Word.

1 Ответ

10 голосов
/ 28 марта 2012

Вы должны быть в состоянии сделать это с экспресс-версией.Я адаптировал ответ на этот вопрос .Адаптированный код ниже.Вам нужно будет добавить ссылку на Microsoft.Office.Interop.Word, чтобы это работало.Если вам не хватает этой библиотеки, просмотрите эту статью на MSDN .

Взглянув на WdSaveFormat , вы также можете сохранить ее в формате Format Filtered HTML (wdFormatFilteredHTML).

namespace Sample {
    using Microsoft.Office.Interop.Word;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;

    class Program {

        public static void Main()
        {
            Convert("C:\\Documents", WdSaveFormat.wdFormatHTML);
        }

        private static void Convert(string path, WdSaveFormat format)
        {

            DirectoryInfo dirInfo = new DirectoryInfo(path);
            FileInfo[] wordFiles = dirInfo.GetFiles("*.doc");
            if (wordFiles.Length == 0) {
                return;
            }

            object oMissing = System.Reflection.Missing.Value;
            Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
            try {
                word.Visible = false;
                word.ScreenUpdating = false;
                foreach (FileInfo wordFile in wordFiles) {
                    Object filename = (Object)wordFile.FullName;
                    Document doc = word.Documents.Open(ref filename, ref oMissing,
                                                       ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                                       ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                                       ref oMissing, ref oMissing, ref oMissing, ref oMissing);
                    try {
                        doc.Activate();
                        object outputFileName = wordFile.FullName.Replace(".doc", ".html");
                        object fileFormat = format;
                        doc.SaveAs(ref outputFileName,
                                   ref fileFormat, ref oMissing, ref oMissing,
                                   ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                   ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                   ref oMissing, ref oMissing, ref oMissing, ref oMissing);

                    }
                    finally {
                        object saveChanges = WdSaveOptions.wdDoNotSaveChanges;
                        ((_Document)doc).Close(ref saveChanges, ref oMissing, ref oMissing);
                        doc = null;
                    }
                }

            }
            finally {
                ((_Application)word).Quit(ref oMissing, ref oMissing, ref oMissing);
                word = null;
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...