asp.net-mvc - 在 Office Web Apps 中从 ASP.NET 打开 Excel/Word 文档进行编辑?

标签 asp.net-mvc sharepoint web-applications azure

我有一个托管在 Azure 上的 ASP.NET Web 应用程序,供我们公司内部使用。在此网站上,我保留了一些电子表格和 Word 文档,我希望公司员工能够单击它们,并让它们直接在 Microsoft Office Web Apps 中打开,以便他们查看和编辑它们。这与登录 SkyDrive 并单击文件非常相似。这是我正在寻找的内容:

要求:

  1. 用户应该能够直接在浏览器中编辑文档并保存它们。

  2. 我的 ASP.NET Web 应用程序应该能够获取文档列表并显示它们。

  3. 我的 ASP.NET Web 应用程序应该能够允许用户上传新文档

  4. 用户不必登录多次(即,他们只需登录我们的内部 ASP.NET Web 应用程序)。

我尝试过的: 不过,我似乎不知道如何做到这一点,这里有一些我想到并尝试过的事情。

  • 使用 SkyDrive + API:将文档保存在 SkyDrive 中,在员工之间共享,并使用 SkyDrive/Live API 登录并打开文档。这对我们不起作用,因为 SkyDrive 不允许您在不完全公开的情况下共享文档(即,知道链接的任何人都可以查看/编辑它们)。它们必须保存在内部。

  • 使用 SkyDrive Pro:SkyDrive pro 的优点是可以更好地共享凭据。您可以与特定用户共享某些内容,并且只能与该用户共享某些内容(即,他们需要登录才能查看/编辑它)。遗憾的是,Live API 不支持 SkyDrive Pro,因此我无法直接从 ASP.NET 应用程序访问这些文件。

  • Sharepoint:我认为 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 文档。但这是不可能的。

大家还有其他想法吗?

最佳答案

这是一项古老的技术,它只适用于 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 保存为 2003 xml 格式。 我想知道它是否作为一项新技术存在。

但它已被弃用等。所以我想还必须存在更纯粹的解决方案。

关于asp.net-mvc - 在 Office Web Apps 中从 ASP.NET 打开 Excel/Word 文档进行编辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20573375/

相关文章:

.net - 将 jEditable 与 ASP.NET MVC 结合使用(POST)

asp.net-mvc - Kendo UI 网格 ASP.NET MVC 包装器参数映射

c# - SPGridView 中日期/时间的 ObjectDataSource 过滤

linux - 在 Linux 中通过网页进行一些管理工作的最佳方法(安全性)?

java - 从 Weblogic 9.x 上的 Spring 容器内访问 WAR 打包的类路径资源

c# - 向所有传入/传出 URL 添加参数

javascript - 我在 Sharepoint 的脚本编辑器中留下了一个打开的 HTML 标记。它破坏了页面,现在我无法编辑它来修复它。

java - 我可以在 Sharepoint 2007 中添加 Java portlet 吗?

testing - 在 Web 应用程序中创建测试数据?

c# - ASP.NET MVC、本地化路由和用户的默认语言