首页 文章

从Office Web Apps中的ASP.NET打开excel / word文档进行编辑?

提问于
浏览
12

我在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 回答

  • 0

    这是一项古老的技术,它只适用于Internet Explorer,但我认为它的工作方式很优雅 . 请注意,它已被弃用 .

    首先安装Office Web Components OWC,谷歌搜索应该会给你 . 然后,对于电子表格,您可以添加这样的对象

    <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时,您必须以2003 xml格式保存excel . 我想知道它是否作为一项新技术退出 .

    但它已被弃用等等 . 所以我想一个更纯粹的解决方案也必须存在 .

  • 1

    看一下Office Web Apps,特别是关于部署Office Web Apps Server的部分 .

    overview页面的底部,它指出:

    Office Web Apps Server在地址http://OfficeWebAppsServername/op/generate.aspx上提供了一个页面,您可以使用该页面生成指向具有UNC或URL地址的公共文档的链接 . 当用户选择生成的URL时,联机查看器使Office Web Apps Server能够从其位置获取文件,然后使用Office Web Apps进行呈现 .

  • 0

    tl;dr Google Apps / Drive .

    Google Cloud 端硬盘允许您直接从浏览器编辑和保存文档 .

    Google Apps provides an API适用于Google Cloud 端硬盘(Also for .NET),因此您可以获取文档列表,显示这些文档并允许用户上传新文档 .

    您可以管理您的应用拥有的service accounts . 你可以使用openID / SSO,这样用户就不必多次登录了 .

    缺点是GDrive中的文档与MS office中的文档不完全相同 .

  • 1

    如果不能使用上面提到的SkyDrive / Office365 API,我相信可以使用第三方库(Aspose,DevExpress等)实现这样的功能,用于类似办公室的文档处理可视化工具(免费或商业)类似物) .

    校验:

    • 以下演示:

    Excel Editing

    Word Editing

    • this StackOverflow线程,可能在你的场景中有所帮助 .
  • 0

    您绝对可以使用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.

相关问题