我在Azure上托管了一个ASP.NET Web应用程序,供我们公司内部使用 . 在这个网站上,我保留了一些电子表格和文档文档,我希望公司的员工能够点击这些文档,然后直接在Microsoft的Office Web Apps中打开它们,在那里他们可以查看和编辑它们 . 这与登录SkyDrive并单击该文件非常相似 . 这是我正在寻找的:
Requirements :
-
用户应该能够直接在浏览器中编辑文档并保存 .
-
我的ASP.NET Web应用程序应该能够获取文档列表并显示它们 .
-
我的ASP.NET Web应用程序应该能够允许用户上传新文档
-
用户不必多次登录(即,他们只需要登录我们的内部ASP.NET Web应用程序) .
What I've tried :我似乎无法弄清楚如何做到这一点,这里有几件我想过并试过的事情 .
-
Using SkyDrive + API :将文档保存在SkyDrive中,在员工之间共享,并使用SkyDrive / Live API将其登录并打开文档 . 这对我们不起作用,因为SkyDrive不允许您在不完全公开的情况下共享文档(即,任何有链接的人都可以查看/编辑它们) . 它们必须保持在内部 .
-
Using SkyDrive Pro :SkyDrive pro具有更好的共享凭据的好处 . 您可以与特定用户共享某些内容,并且只与该用户共享(即,他们需要登录才能查看/编辑它) . 遗憾的是,Live API不支持SkyDrive Pro,因此我无法直接从ASP.NET应用程序访问这些文件 .
-
Sharepoint :我认为通过将文档保存在文档库和使用SharePoint客户端中是一种可能性 . 我想我可以specify user credentials to obtain a list of documents in the Document Library,但我不确定我是否可以在Office Web中使用其中一个文档,而无需再次登录SharePoint网站 . 特别是如果自己的个人登录超时?我必须在浏览器中使用SharePoint不断重新输入我的SharePoint密码,在与ASP.NET应用程序集成时我不希望这样 .
如果Microsoft将Office Web Apps集成到Azure中,可能会允许您打开存储在Blob存储中的Excel和Word文档 . 但那是不可能的 .
有没有其他想法?
5 回答
这是一项古老的技术,它只适用于Internet Explorer,但我认为它的工作方式很优雅 . 请注意,它已被弃用 .
首先安装Office Web Components OWC,谷歌搜索应该会给你 . 然后,对于电子表格,您可以添加这样的对象
然后,您可以通过javascript获取对象,并在数据库中或从数据库中操纵值,或者您想要的任何内容 .
请注意,当您设置xml-url时,您必须以2003 xml格式保存excel . 我想知道它是否作为一项新技术退出 .
但它已被弃用等等 . 所以我想一个更纯粹的解决方案也必须存在 .
看一下Office Web Apps,特别是关于部署Office Web Apps Server的部分 .
在overview页面的底部,它指出:
tl;dr Google Apps / Drive .
Google Cloud 端硬盘允许您直接从浏览器编辑和保存文档 .
Google Apps provides an API适用于Google Cloud 端硬盘(Also for .NET),因此您可以获取文档列表,显示这些文档并允许用户上传新文档 .
您可以管理您的应用拥有的service accounts . 你可以使用openID / SSO,这样用户就不必多次登录了 .
缺点是GDrive中的文档与MS office中的文档不完全相同 .
如果不能使用上面提到的SkyDrive / Office365 API,我相信可以使用第三方库(Aspose,DevExpress等)实现这样的功能,用于类似办公室的文档处理可视化工具(免费或商业)类似物) .
校验:
Excel Editing
Word Editing
您绝对可以使用Office Web Apps . 首先,您必须拥有Office Web Apps场 . 其次,您需要实现WOPI接口 . 这个msdn博客上有代码示例和github引用 .
https://blogs.msdn.microsoft.com/apulliam/2016/06/19/wopi-framework/
WOPI框架仅支持ASP.NET WOPI服务器 . WOPI框架主要是一组C#类,用于简化WOPI Server编程并封装协议的复杂性 . 可以使用相同的方法为其他开发平台提供WOPI框架,例如Node.js.