网络开发人员能够建立一个Microsoft excel文件,并且可以以多种方式将文件传递到客户端。为了能够为你提供多种选择,在这里我们介绍了几种方法。虽然这些方法都是以vbscript而编写,但都很容易地转换为你需要的其他脚本语言。
首先,我们查看一个比较简单的方法。在这一方法中,我们传递的是一个HTML表,然后改变传递到浏览器的Content Type。在第二部分,我们将讲述更加复杂和功能强大的方法。我们将使用一个Activex组件直接地在代码和MS excel的当地实例之间建立连接。
如果你使用的是一个比较简单的excel工作表,可以采用这一方法。我们建立一个标准的HTML表,然后将其导入到我们的服务器端脚本──在这里是vbsript脚本动态服务器主页(ASP)──使用的是excel的MINE类型而不是HTML类型,这样浏览器就可以管理这些脚本。
在脚本中,我们所做的第一件事是设置即将返回到客户端浏览器的Content Type。
Response.ContentType = "application/vnd.ms-excel"
既然已经通知浏览器传递了一个excel文件,我们可以很方便地建立标准的HTML表。表A 中的列表可以从一个数据库的查询或者从静态HTML而产生。
我们也可以在数据中包含一些简单的excel命令。例如,我们可以建立三纵列:第一列值,第二列值以及总值,如表B所示。
你所获得的结果取决于网络浏览器如何处理.XLS文件。很多时候都是通过网络浏览器处理,而其他时候,.XLS文件将打开excel然后再导入文件。这些过程依赖于当地机器的设置,而不是在网络主页的控制范围之内。
对很多开发人员而言,这一技术已经足够。但如果你需要更加复杂或者更加灵活的方法,可以使用一个ActiveX组件。
如果你使用的不是一个简单的工作表,或者你需要调用某些vbA函数,此时你必须使用ActiveX来建立你的文件。在这一方法中,我们将在客户端上建立一个excel的实例,然后传递数据和函数到excel实例中。
为了能达到我们的要求,终端用户必须在他们的网络浏览器中的ActiveX settings中设置为Prompt或Enable。(在当前的例子中,这一功能只能在网络浏览器中设置。)
<script language='vbScript'>
Dim Xcl
Sub Startexcel()
Set Xcl = CreateObject("excel.Application")
Xcl.Visible = true
Set newBook = Xcl.Workbooks.Add
首先,我们建立我们的excel对象,即Xcl。这一对象有助于实现我们的代码和Exce之间的连接。代码的其他部分将以名为Startexcel而嵌入到vbScript的子程序中。接着,我们使用Server.CreateObject函数来建立与excel的连接并分配给Xcl对象。然后,我们将对象的visibility设置为true,然后在对象中添加一个工作本(Workbook):
newBook.Worksheets.Add