要求:
>用户应该可以直接在浏览器中编辑文档并保存.
>我的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 Client中,我认为可能是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 Storage中的Excel和Word文档.但这是不可能的.
任何人都有其他想法?
解决方法
你开始安装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格式.
我不知道它是否退出作为一项新技术.
但是它已经被淘汰了等等.所以我猜想一个更纯粹的解决方案也是必须存在的.