Различия в выполнении консольного приложения непосредственно из .exe по сравнению с выполнением через расписание задач?

я работаю на сервере Window 2008, на этом сервере я разработал консольное приложение vb.net 2008, которое открывает файл excel 2003 и использует его содержимое для создания файла xml, поэтому у меня есть две ситуации:
1. Различия в выполнении программы: если я запускаю приложение из Visual Studio или напрямую из исполняемого файла, оно открывается и обрабатывает excel без проблем, но если я настроил задачу в планировщике задач Windows или в adtempus, которые выполняются эта программа не удалась и выдает это исключение:

Исключение из HRESULT: 0x800A03EC- в Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Пароль, Объект WriteResPassword, Объект IgnoreReadOnlyRecommended, Происхождение объекта, Разделитель объектов, Редактируемый объект, Уведомление объекта, Преобразователь объектов, Объект AddToMru, Локальный объект, Объект CorruptLoad) в .Module1.convertExcelToXmlFile(String excelFile)

я много читал об этом исключении, но на данный момент я не могу его разрешить, поэтому я хочу знать, как эта программа может правильно выполняться из Visual Studio или непосредственно из выполнения, но не выполняется при выполнении задачи, если обе ситуации находятся на одном сервере? есть ли способ исправить это поведение?


2. В консольном приложении, когда я открываю файл excel с помощью метода open, файл в excel появляется на несколько секунд, а затем закрывается. Есть ли способ получить доступ к содержимому файла excel, но этот файл не отображается в Мисс Эксель?

Спасибо.


person eliv    schedule 30.05.2012    source источник


Ответы (3)


Вы не должны использовать Office Interop в автоматическом процессе.

В настоящее время Microsoft не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любого автоматического неинтерактивного клиентского приложения или компонента (включая ASP, ASP.NET, DCOM и службы NT), поскольку Office может демонстрировать нестабильное поведение и/или или взаимоблокировка при запуске Office в этой среде.

Если вы создаете решение, работающее в контексте на стороне сервера, вы должны попытаться использовать компоненты, которые были сделаны безопасными для автоматического выполнения. Или вы должны попытаться найти альтернативы, которые позволяют хотя бы части кода выполняться на стороне клиента. Если вы используете приложение Office из решения на стороне сервера, у приложения не будет многих необходимых возможностей для успешной работы. Кроме того, вы рискуете стабильностью всего решения.

http://support.microsoft.com/?id=257757

Существует ряд продуктов, которые будут манипулировать документами Excel и правильно работать без присмотра.

person BNL    schedule 30.05.2012

Файл Excel, который вы пытаетесь открыть, находится в сети?

Если это так, проблема, скорее всего, связана с тем, что ваша служба планировщика заданий и любые выполняемые ею задания (по умолчанию) выполняются под локальной учетной записью SYSTEM, доступ к которой запрещен по сети.

Если вы измените задачу для запуска под другой учетной записью (например, под учетной записью домена, которой вы предоставили привилегии для удаленной общей папки). (Обратите внимание, что это изменение может повлиять на выполнение других запланированных задач, поэтому вы должны быть уверены в необходимых разрешениях.)

person ewall    schedule 30.05.2012
comment
привет, файл находится на том же сервере, где я запускаю программу в обоих направлениях непосредственно из визуальной студии и в расписании задач или adtempus - person eliv; 30.05.2012
comment
Что ж, это исключает мой ответ выше :) Как насчет других распространенных причин ошибок типа «файл не найден», например: вы используете полные пути вместо относительных (поскольку задача может выполняться из другого рабочего каталога)? или в путях к файлам с пробелами отсутствуют кавычки? - person ewall; 31.05.2012

На всякий случай, если вы еще не поняли, наиболее вероятное разрешение, которое сработало для меня, можно найти по этому URL-адресу:

https://social.msdn.microsoft.com/Forums/en-US/b81a3c4e-62db-488b-af06-44421818ef91/excel-2007-automation-on-top-of-a-windows-server-2008-x64?forum=innovateonoffice

Если ваш сервер 64-разрядный, создайте папку с именем «Рабочий стол» по указанному ниже пути, например C:\Windows\SysWOW64\config\systemprofile\Desktop.

Если ваш сервер 32-разрядный, сделайте эту папку C:\Windows\System32\config\systemprofile\Desktop

person user841311    schedule 02.12.2014