Серверная автоматизация Office по-прежнему возможна с Office 365? - PullRequest
0 голосов
/ 06 мая 2020

У меня есть приложение ASP. NET Webforms, в котором пользователь может создавать отчеты с помощью серверной автоматизации офиса. Он в основном работает с заполняемыми полями формы, и в конце пользователь получает загрузку с документом Office. Приложение довольно старое, и я не разрабатывал это программное обеспечение. Я также знаю о побочных эффектах автоматизации офисных серверов и этой статье:

https://support.microsoft.com/en-us/help/257757/considerations-for-server-side-automation-of-office

Он просто работает почти 15 лет с несколькими разными версиями Office. , самый новый - Office 2016, но теперь я должен знать, будет ли он по-прежнему работать с Office 365. Он выглядит как гибридное решение, программное обеспечение как услуга, но все же требует установки на машину.

Это немного хакерский, чтобы настроить, например:

Пользователь приложения IIS должен стать владельцем следующей папки:

  • C: \ Program (x86) \ Microsoft Office
  • C: \ Program \ Microsoft Office
  • C: \ Windows \ System32 \ config \ systemprofile \ AppData
  • C: \ Windows \ System32 \ config \ systemprofile \ Desktop (иногда отсутствует, поэтому его необходимо создать)
  • C: \ Windows \ SysWOW64 \ config \ systemprofile \ AppData
  • C: \ Windows \ SysWOW64 \ config \ systemprofile \ Desktop (иногда отсутствует, поэтому его нужно создать) * 1 025 *
  • C: \ Program (x86) \ Microsoft.Net \
  • C: \ Program Files (x86) \ Microsoft ASP .NET \

И кроме того, необходима некоторая конфигурация DCOM для Word и Excel. Пользователю приложения IIS требуется разрешение на запуск офисного приложения et c.

Я не уверен, что все необходимые зависимости все еще присутствуют в Office 365.

Вот фрагмент кода :

Function CreateDoc(ByVal docpath As String, ByVal docname As String, ByVal Document As String) As String

        Dim ff_name As String = ""
        Dim strFileName As String = Nothing
        Dim strExtension As String = Nothing
        Dim fileBytes As Byte() = Nothing


        Try

            Dim w = New Word.Application

            w.Visible = m_obj.Project.OfficeDisplay
            w.DisplayAlerts = Word.WdAlertLevel.wdAlertsNone
            w.Documents.Open(docpath)

            SetRanges(Document)

            Dim i As Integer

            For Each ff As Word.FormField In w.ActiveDocument.FormFields
            .
            .
            .

Ответы [ 2 ]

1 голос
/ 06 мая 2020

В настольных версиях Microsoft Office пока ничего не изменилось. Но я бы рекомендовал использовать Open XML SDK для создания документов на стороне сервера, см. Добро пожаловать в Open XML SDK 2.5 для Office для получения дополнительной информации.

1 голос
/ 06 мая 2020

Сначала хорошие новости. Если он работает с Office 2016, он должен хорошо работать и с Office 365. Плохая новость: с ежемесячной эволюцией использования риска взаимодействия в офисе для создания проблем в будущем (через месяцы или, возможно, через годы), трудно без аудита всего решения дать вам ответ. Следующим шагом будет проверка того, можно ли преобразовать ваше приложение в веб-надстройку с выключенным ie. js или использовать Graph API. Но, к сожалению, многое из того, что мы делаем во взаимодействии, невозможно с современным решением ...

...