C # конвертировать .doc в .htm - PullRequest
4 голосов
/ 01 мая 2011

Я пытаюсь преобразовать файл .doc в формат .htm для просмотра на странице ASP.NET MVC.

Я использую следующий код в C #:

using Microsoft.Office.Core;
using Microsoft.Office.Interop.Word;

....

Microsoft.Office.Interop.Word.Application objWord = new Microsoft.Office.Interop.Word.Application();

            object source = @"C:\Users\XYZ\Desktop\ScreenShot.doc";
            object target = @"C:\Users\XYZ\Desktop\ScreenShot.html";
            object unknown = Type.Missing;
            objWord.Documents.Open(ref source, ref unknown,
                 ref unknown, ref unknown, ref unknown,
                 ref unknown, ref unknown, ref unknown,
                 ref unknown, ref unknown, ref unknown,
                 ref unknown, ref unknown, ref unknown, ref unknown);

            object format = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatRTF;
            objWord.ActiveDocument.SaveAs(ref target, ref format,
                    ref unknown, ref unknown, ref unknown,
                    ref unknown, ref unknown, ref unknown,
                    ref unknown, ref unknown, ref unknown,
                    ref unknown, ref unknown, ref unknown,
                    ref unknown, ref unknown);

Я попытался найти способ конвертировать .doc (даже .ppt) в формат .htm, и всегда находил код, похожий на приведенный выше.

Но я продолжаю получать это исключение:

Получение фабрики классов COM для компонента с CLSID {000209FF-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

в строке:

Microsoft.Office.Interop.Word.Application objWord = новый Microsoft.Office.Interop.Word.Application ();

Это связано с тем, что у меня установлен Word Starter 2010, а не полная версия Office 2010, или есть какое-то другое решение?

Ответы [ 2 ]

2 голосов
/ 01 мая 2011

Использование COM-объектов из MS Office на стороне сервера не очень хорошая идея.Первая проблема техническая - есть несколько ловушек с процессами (то есть иногда excel / word не завершается после вызова Quit ()).Это не легко, но это решаемо.

Однако вторая проблема - это лицензирование.Вам нужна лицензия для каждого пользователя, который будет использовать MS Office.Поэтому, если вы хотите использовать его в Интернете, у вас будут серьезные финансовые проблемы.

Есть несколько библиотек, которые могут открывать (сохранять, конвертировать и т. Д.) Форматы MS Office без установки MS Office.Я когда-то работал с Aspose библиотекой, но есть несколько других.

1 голос
/ 01 мая 2011

Вы получили это исключение, поскольку COM-объект не настроен для разрешения запуска и доступа к удостоверению пользователя aspnet. Лучше поменять пользователя Application Pool Identity на «Network Service», у которого достаточно прав для запуска компонентов COM +.

Для более подробной информации отметьте это

...