我有一个托管在 Azure 上的 ASP.NET Web 应用程序,供我们公司内部使用。在此网站上,我保留了一些电子表格和 Word 文档,我希望公司员工能够单击它们,并让它们直接在 Microsoft Office Web Apps 中打开,以便他们查看和编辑它们。这与登录 SkyDrive 并单击文件非常相似。这是我正在寻找的内容:
要求:
用户应该能够直接在浏览器中编辑文档并保存它们。
我的 ASP.NET Web 应用程序应该能够获取文档列表并显示它们。
我的 ASP.NET Web 应用程序应该能够允许用户上传新文档
用户不必登录多次(即,他们只需登录我们的内部 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/