65.9K
CodeProject 正在变化。 阅读更多。
Home

Office Web Component v11.0 电子表格与 AJAX 互操作性 Part 1

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.05/5 (9投票s)

2008 年 5 月 19 日

GPL3

2分钟阅读

viewsIcon

96034

downloadIcon

1947

本文演示了如何使用 OWC 和 AJAX 将电子表格内容作为 XML 数据存储到数据库中。此 XML 反过来在 OWC 控件中从数据库源呈现为电子表格。

引言

Office Web Component (OWC) 是一组 OLE 类,在 Microsoft Office 2000、Office XP 和 Office 2003 中作为 ActiveX 控件实现。此 ActiveX 控件可以插入到网页、Visual Basic 和 VBA 窗体、Windows 窗体中,或在内存中进行编程。 OWC 可以被任何符合 COM 的组件对象模型编程语言使用。 有时在我们的应用程序中,我们可能需要 Excel 电子表格的功能,并具有最低级别的功能,在这种情况下,OWC 是解决我们问题的方案。

注意:OWC 不适用于 Visual Studio .Net 中的设计时工具箱。

UpdateTemplate

系统要求

http://www.microsoft.com/downloads/details.aspx?FamilyId=7287252C-402E-4F72-97A5-E0FD290D4B76&displaylang=en

或者只是搜索“Office Web Component v11.0 Download”,是的,我相信“Google”会在 Microsoft 没有更改下载位置的情况下为我们提供准确的结果。 这里需要注意的重要一点是,服务器不需要安装 Microsoft Excel。 客户端也不需要。

实现

安装 office web component 后,使用 <object> 标签将组件控件插入到您的 aspx 页面中。

代码块应设置为“Formatted”样式,如下所示

<object classid="clsid:0002E559-0000-0000-C000-000000000046" id="sp" width="100%" style="height: 300px">
<param name="XMLData" value="<a></a>" />
</object>

        

注意:OWC 版本 10 和 11 在 Visual Studio 2005 中显示为禁用状态。有关更多信息,请单击

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=114448

将 OWC Activex 控件与 AJAX 结合使用

当想要将 OWC 的电子表格内容保存到服务器端数据库时,这将很有用。 这需要将客户端 OWC 公开给服务器端,最好使用 Ajax 实现来实现。 OWC 将电子表格数据呈现为 XML 数据。 此 xml 数据存储在数据库表中。 当此 xml 数据被检索回前端时,它将呈现为电子表格数据。

步骤 1

.ASPX

<object classid="clsid:0002E559-0000-0000-C000-000000000046" id="sp" width="100%" style="height: 300px">
<param name="XMLData" value="<a></a>" />
</object>

<input type="button" value="Save" onclick="SaveTemplate()" class="ButtonStyle" />

上面的代码将在页面中插入一个 OWC 控件。 该控件显示电子表格。 为了将数据存储在数据库中,我使用了 AJAX。 javascript 函数执行回发到服务器。 同时,它将 XMLData 保存在服务器端隐藏变量中,并将此数据存储到数据库中。

 
function LoadTemplate()
    {  
  
    try
    {
            XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
            var spreadsheet = document.getElementById("sp");
            
            if(XMLHttpRequestObject) 
            {                         
                var documenttype = document.getElementById("Select1")
                XMLHttpRequestObject.open("POST", "UpdateTemplate.aspx?operation=loadTemplate");      
                XMLHttpRequestObject.onreadystatechange = function ()
                {
                    if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) 
                    {
                           spreadsheet.XMLData = XMLHttpRequestObject.responseText;                      
                           //alert(XMLHttpRequestObject.readyState );
                    }
                }            
                XMLHttpRequestObject.send(null);
                document.getElementById('<%= lblMessage.ClientID %>').innerText=XMLHttpRequestObject.responseText;
            }                  
          }
          catch(err)
          {}
            
    }
  
 

第二步

后台代码

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Try

            Dim strOperation As String = String.Empty
            strOperation = Request("operation")


            If strOperation = "save" Then
                Dim streamReader As New System.IO.StreamReader(Request.InputStream)
                Dim spreadsheetdata = streamReader.ReadToEnd() '' this this needs to be updated in teh database
                SaveTemplate(spreadsheetdata)

                Response.Write("DataSaved")
                Response.End()
            End If

        Catch ex As Exception
            'Response.Write("error occured")
            'Response.End()
        End Try
    End Sub

总结

Office web component 是一个很好的工具,可以将 excel 类型的电子表格功能引入到您的网页上,而不是使用 excel 对象并在运行时创建电子表格。 后一种方法既乏味又对用户不友好。 这涉及到创建一个全新的组件。 OWC 确实可以节省大量的开发时间,并在 Web 上模拟实时的 excel 工作表。

有关类似主题的任何想法、建议或参考资料都肯定会增加我们的学习价值。

有关更多信息,您可以通过 gautams.mail@gmail.com 与我联系

© . All rights reserved.