У меня есть приложение 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
.
.
.