Interop.Word Documents.Open null
Я пытаюсь открыть файл .docx и преобразовать в PDF с помощью Interop.Word.Application. Он работает как консольное приложение, но если я использую его в своем веб-приложении, он не работает. Я попытался увидеть разрешения в папке. Я дал "Network Service" с полным контролем, но все же я получаю ссылку на объект, не установленную в word.Documents.Open. Не могли бы вы сообщить мне, что может быть проблемой? Я застрял в этой ошибке. Пожалуйста, дайте мне знать. Я ценю любые предложения. Спасибо.
Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
object oMissing = System.Reflection.Missing.Value;
word.Visible = false;
word.ScreenUpdating = false;
string fileName = @"c:\OUTPUT\test.docx");
Document doc = word.Documents.Open(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);
doc.Activate();
Ответы
Ответ 1
Если вы все еще ищете ответ, я нашел его всего лишь минуту назад для моего проекта.
Откройте настройки конфигурации DCOM:
- Пуск →
dcomcnfg.exe
- Компьютер
- Локальный компьютер
- Конфигурация DCOM
- Поиск
Microsoft Word 97-2003 Documents
→ Свойства
Вкладка Identity
, измените с Launching User
на Interactive User
Ответ 2
Попробуйте это, это может вам помочь.
- Создайте новый каталог "Рабочий стол" внутри "C:\Windows\SysWOW64\config\systemprofile \"
он работает для меня после долгого долгого долгого поиска решения.
Он швы, чтобы быть проблемой профиля.
Ответ 3
Это сработало для меня.
https://social.msdn.microsoft.com/Forums/en-US/0f5448a7-72ed-4f16-8b87-922b71892e07/word-2007-documentsopen-returns-null-in-aspnet.
Если этот helpe вы, пожалуйста, дайте ему ответ
Ответ 4
Как заявил Поли в своем комментарии к OP, я думаю, что проблема в основном связана с библиотеками на веб-сервере. Возможно, вы сможете взломать эту работу в веб-приложении, но я бы посоветовал это сделать.
EDIT: Арг, я неправильно прочитал сообщение и только что принял Excel. Это то, что большинство людей ищет при использовании Office.Interop в моем опыте;)
Существует открытая библиотека, которая работает с форматами DocX (введите описание ссылки здесь). К сожалению, он допускает на странице, что преобразования в форматы, такие как PDF, практически невозможно без библиотек Office.Interop(http://cathalscorner.blogspot.com/2009/10/converting-docx-into-doc-pdf-html.html)
Здесь является "перспективной" альтернативой, но YMMV.
Ответ 5
Скорее всего, у вас есть другое слово dll на вашем веб-сервере, возможно, более старое. Я предлагаю вам ссылаться на конкретную DLL и копировать ее на веб-сервер, поэтому вы можете быть уверены, что используете одно и то же слово dll, с которым вы тестировали свой код, и знаете, что он работает.
Однако при использовании interop могут возникнуть некоторые проблемы, однако слово interop - единственное, что вы можете быть уверены, что он будет правильно преобразовывать файлы слов.
Ответ 6
Чтобы решить эту проблему, я должен был сделать обе вещи:
Если вам не удается найти запись DCOM из-за другого языка, вы можете сделать это:
- Меню Пуск>
regedit
- Перейдите к
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{00020906-0000-0000-C000-000000000046}
Щелкните правой кнопкой мыши> Создать> Значение строки
- В качестве ключа введите
RunAs
- Для значения поместите
Interactive User
Вы можете сделать то же самое для Excel на AppID {00020812-0000-0000-C000-000000000046}
.
Ответ 7
Я сделал следующие шаги, и все заработало нормально:
- Создайте папку на рабочем столе
- Измените элемент DCOM для входа в систему с определенным пользователем вместо запускающего/интерактивного пользователя
- Изменил службу, чтобы она запускалась как тот же конкретный пользователь
Изменить 2019-09-29.
Из-за большого обновления Windows мне пришлось делать точный прогресс снова и снова.