Открыть документ Excel/Word из ASP.NET в Office Web Apps для редактирования?

У меня есть веб-приложение ASP.NET, размещенное на Azure для внутреннего использования нашей компанией. На этом сайте я храню несколько электронных таблиц и текстовых документов, которые я хотел бы, чтобы сотрудники компании могли нажимать, и открывать их непосредственно в Microsoft Office Web Apps, где они могут просматривать и редактировать их. Это очень похоже на вход в SkyDrive и нажатие на файл. Вот что я ищу:

Требования

  • Пользователь должен иметь возможность редактировать документы непосредственно в своем браузере и сохранять их.

  • Мое веб-приложение ASP.NET должно иметь возможность получить список документов и отобразить их.

  • Мое веб-приложение ASP.NET должно позволить пользователям загружать новые документы

  • Пользователю не нужно входить в систему более одного раза (т.е. им нужно только войти в наше внутреннее веб-приложение ASP.NET).

Что я пробовал: Я не могу понять, как это сделать, но вот пара вещей, о которых я думал и пытался.

  • Использование SkyDrive + API. Сохранение документов в SkyDrive, обмен ими между сотрудниками и использование API SkyDrive/Live для входа в систему и открытия документов. Это не работает для нас, потому что SkyDrive не позволяет вам обмениваться документами, не делая их полностью общедоступными (т.е. Любой, у кого ссылка может просматривать/редактировать их). Они должны храниться внутри страны.

  • Использование SkyDrive Pro: SkyDrive pro имеет преимущество в более широком использовании учетных данных. Вы можете поделиться чем-то с конкретным пользователем и только с этим пользователем (т.е. Им нужно войти в систему, чтобы просмотреть/отредактировать его). К сожалению, SkyDrive Pro не поддерживается в Live API, поэтому я не могу получить доступ к файлам непосредственно из своего приложения ASP.NET.

  • Sharepoint. Я считаю, что SharePoint - это возможность хранения документов в библиотеке документов и использовании SharePoint Client. Я думаю, что я могу указать учетные данные пользователя для получения списка документов в Библиотеке документов, но я не уверен, что могу "открыть" один из этих документов в Office Web в них, не мешая им снова войти на сайт SharePoint и снова. Особенно, если их личный логин истекает? Я должен повторно вводить свой пароль SharePoint постоянно, используя SharePoint в своем браузере, я не хочу этого, когда вы интегрируетесь с нашим приложением ASP.NET.

Было бы здорово, если бы Microsoft интегрировала Office Web Apps в Azure, что потенциально позволяло вам открывать документы Excel и Word, хранящиеся в хранилище Blob. Но это невозможно.

У кого-нибудь есть другие идеи?

Ответ 1

Это старая технология, и она работает только в Internet Explorer, но я думаю, что она элегантна в том, как она работает. Обратите внимание, что это устарело.

Вы начинаете с установки Office Web Components OWC, поиск Google должен дать вам это. Затем для электронных таблиц вы добавляете такой объект

<object classid="clsid:0002E551-0000-0000-C000-000000000046" id="Spreadsheet1" width="1100" height="900">
                <param name="DataType" value="XMLURL" />
                <param name="AllowPropertyToolbox" value="1" />
                <param name="AutoFit" value="1" />
                <param name="CalculationPoco" value="-4105" />
                <param name="Caption" value="" />
                <param name="DisplayColumnHeadings" value="0" />
                <param name="DisplayGridlines" value="-1" />
                <param name="DisplayHorizontalScrollBar" value="1" />
                <param name="DisplayOfficeLogo" value="0" />
                <param name="DisplayPropertyToolbox" value="0" />
                <param name="DisplayRowHeadings" value="0" />
                <param name="DisplayTitleBar" value="1" />
                <param name="DisplayToolbar" value="0" />
                <param name="DisplayVerticalScrollBar" value="-1" />
                <param name="DisplayWorkbookTabs" value="1" />
                <param name="EnableEvents" value="-1" />
                <param name="MaxHeight" value="90%" />
                <param name="MaxWidth" value="90%" />
                <param name="MoveAfterReturn" value="-1" />
                <param name="MoveAfterReturnDirection" value="-4121" />
                <param name="RightToLeft" value="0" />
                <param name="ScreenUpdating" value="1" />
                <param name="EnableUndo" value="1" />

                <p>OWC required.</p>
            </object>

И затем вы можете получить объект через javascript и манипулировать значениями в базе данных или из базы данных или что хотите.

    exlObj = document.all.Spreadsheet1;
    exlObj.XMLURL ="/Excel/Whatever.xml";
    exlObj.ActiveSheet.Unprotect();
    exlObj.Range('Sheet1!$A1').Value = 5;

Обратите внимание, что при установке xml-url вы должны иметь excel, сохраненный в формате xml в формате 2003. Интересно, выходит ли это как новая технология.

Но он устарел и т.д. Поэтому я предполагаю, что также должно существовать более чистое решение.

Ответ 2

Взгляните на Office Web Apps и, в частности, раздел о развертывании Office Web Apps Server.

В нижней части страницы отображается следующее сообщение:

Office Web Apps Server предоставляет страницу по адресу http://OfficeWebAppsServername/op/generate.aspx, которую вы можете использовать для создания ссылок на общедоступные документы с UNC или URL-адресами. Когда пользователь выбирает сгенерированный URL-адрес, средства просмотра онлайн позволяют Office Web Apps Server получать файл из своего местоположения, а затем визуализировать его с помощью приложений Office Web Apps.

Ответ 3

tl; dr Google Apps/Drive.

Google Диск позволяет редактировать и сохранять документы непосредственно из браузера.

Google Apps предоставляет API для Google Диска (Также для .NET), поэтому вы можете получить список документов, отобразить их и разрешить пользователям загружать новые документы.

Вы можете управлять учетными записями служб, принадлежащими вашему приложению. вы можете использовать openID/SSO, поэтому пользователю не нужно будет входить в систему более одного раза.

Недостатком является то, что документы в GDrive не такие же, как в MS-офисе.

Ответ 4

Если упомянутый API SkyDrive/Office365 не может быть использован, я считаю, что возможно реализовать такую ​​функциональность с использованием 3-х партийных библиотек (Aspose, DevExpress и т.д.), предназначенных для офисной обработки документов + визуализаторов (бесплатные или коммерческие аналоги).

Check:

  • Следующие демонстрации:

Редактирование Excel

Редактирование Word

  • И this поток StackOverflow, который может быть полезен в вашем сценарии.

Ответ 5

Для этого вы можете использовать Office Web Apps. Во-первых, у вас должна быть ферма Office Web Apps. Во-вторых, вам необходимо реализовать WOPI-интерфейс. В этом блоге msdn есть примеры кода и ссылки на github.

https://blogs.msdn.microsoft.com/apulliam/2016/06/19/wopi-framework/

WOPI Framework поддерживает только серверы WOPI ASP.NET. WOPI Framework - это всего лишь набор классов С# для упрощения программирования WOPI-сервера и инкапсулирования сложностей протокола. Такой же подход можно использовать для доставки WOPI Framework для других платформ разработки, таких как Node.js.