可能是将一个html 表格变成 Excel 格式的最快方法。 属性通知
浏览器数据要被格式化为何种格式,在这里我们要的格式是 Excel。当浏览器看到这个属性的值是Excel时,它就提示用户保存或打开这个文件。如果用户选择打开文件,
就启动了Excel并在其中观看数据。为使其工作正确,必须在向对象写入任何内容之前设置 。此语法的例子如下:
Line 1: 〈 %@ ="" % 〉
Line 2: . = "/"
Line 3: % 〉
点击这里可以得到有关ASP的 对象的属性的更多信息。
当我试图用 4.x.测试时发现了一个问题,在文章 曾经提到过。 这篇知识库文章的内容可以概括如下:
“如果 与一个动态生成Word、 Excel或其它活动文档的Web服务器
资源相连接时, 会为此资源发出两个GET 请求。第二个GET 通常没有ses
sion 状态信息、临时 或者已经为客户指定的证明信息。这个错误可能影响到任何
寄宿在 结构窗口内的本地服务器(EXE) 的活动文档应用程序。它在ISAP
I、 ASP或 CGI 应用程序中发生最为频繁,它们校验HTTP " Type" 头文件以识别所
安装的应用程序”。
因此如果你尝试使用 变量或 , 并使用IE4,就有可能遭遇到这个错
误。经证实,在IE5中这个问题已经得到解决。
一个用逗号分隔开的值文件是将web页面输出到Excel可读格式的第二种选择。这种格
式比 属性有更大的灵活性。相对于其它方法,CSV还有两个优势:首先,不需
要任何客户机或服务器上的 软件去创建它,第二,文件通常要比一个Excel 文件小。
CSV格式的定义如下:逗号分隔列,回车分隔行。逗号作为分隔符, 也会与包含逗号
的 域(如$1,234)引发一个问题; 这会在将要创建的行中导致一个额外的列。这个问题也
很容易矫正, 方法是在每个结尾处用逗号将域封闭起来。
在提供的例子中把 ()函数过一遍,就能了解CSV文件是如何创建的。
Line 1: = ()
Line 2: Set fs = ("
.")
Line 3: Set a = fs.(.(".") & "" & &
Line 4: ".csv",True)
Line 5: If Not oRS.EOF Then
Line 6: = chr(34) & "Year" & chr(34) & ","
Line 7: = & chr(34) & "" & chr(34) & ","
Line 8: = & chr(34) & "Sales" & chr(34) & ","
Line 9: a.()
Line 10: Do Until oRS.EOF
Line 11: For i = 0 To oRS..Count-1
Line 12: = chr(34) & oRS.(i) & chr(34) Line 13: & ","
Line 14: a.Write()
Line 15: Next
Line 16: a.()
Line 17: oRS.
Line 18: Loop
Line 19: End If
Line 20: a.Close
Line 21: Set fs=
Line 22:.Write("Click〈 A HREF=" & & ".csv 〉Here〈 /A 〉
Line 23: to get CSV file")
第一行调用() 函数创建一个唯一的文件名,有关() 函数将
在稍后讨论。
第2行到第4行,用 对象和函数将要写入的文本文
件。在这个例子中,所写入的文件与源文件在同一个路径下asp服务器,在实际工作中,你也许想要
创建一个单独的路径存储这些文件。
第5-9行产生第一行的标题。因为报告通常都是相同的,我就把列名的代码固定下来,
虽然也有可能读 数据库的列名并使用它们。注意我在各个域中是如何包含逗号的。使用Wri
函数将它们与一个回 车一起发送到文件中。
第10行到18行在记录集中循环,用引号给每个域做出标志,后面跟着一个逗号。然后W
rite函数将每个 域发送到文件。 用回车结束每一行。
最后几行关闭文件、释放对象、在页面上放置一个链接以便能够找回它。
当你点击生成的链接时,就会被提示保存或打开。如果选择打开,文件就在Excel 中
打开(假设计算机 上已经安装)。如果选择了保存,就将这个文本文件保存到存储设备上
并将它输入各个应用程序中。
我所讨论的最后一种方法是用 Excel 对象创建一个实际的Excel(.xls ) 文
件。要使用这些对象要求在Web 服务器上安装Excel。使用这些控制可以对格式化有更多的
控制(如字体、颜色等), 并允许你进行一切在真正的Excel 应用程序中可以进行的操
作。一定要监视你的服务器的性能,因为 Excel 可能成为一个相当大的对象并对性能造成
冲击,这取决于你如何使用它以及服务器有多忙。
我发现在Excel 对象上得到更多信息的最快最简便的方法是使用 Basic对象浏
览器,观看对象 并使用上下文敏感帮助来得到更多细节。使用这个对象浏览器时:启动Vis
ual Basic, 创建一个工程文件, 增加一个对 Excel对象库的引用。在 View 菜
单下,可以选择一个对象浏览器然后指定Excel 库,看到所有可用的对象。按 F1可得到当
前标题的上下文敏感帮助。
在所提供的样本中把() 函数过一遍,就可以看到如何创建一个Excel文
件。 基本步骤与 创建 CSV文件的基本相同,只是所创建的是一个Excel工作表。
Line 1: Dim
Line 2: Dim
Line 3: Set = .("Excel.")
Line 4: . = False
Line 5:
..Add
Line 6: Set = .(1)
Line 7: .Cells(1,1).Value = "Year"
Line 8: .Cells(1,1).. = 5
Line 9: .Cells(1,2).Value = ""
Line 10: .Cells(1,2).. = 5
Line 11: .Cells(1,3).Value = "Sales"
Line 12: .Cells(1,3).. = 5
Line 13: iRow = 2
Line 14: If Not oRS.EOF Then
Line 15: Do Until oRS.EOF
Line 16: For i = 0 To oRS..Count-1
Line 17: .Cells(iRow,i + 1).Value = oRS.(i)
Line 18: .Cells(iRow,i + 1).. = 4
Line 19: Next
Line 20: iRow = iRow + 1
Line 21: oRS.
Line 22: Loop
Line 23: End If
Line 24: = ()
Line 25: . .(".") & "" & & ".xls"
Line 26: .Quit ' Close the
Line 27: Set =
Line 28: Set =
Line 29: .Write("Click 〈 A HRef=" & & ".xls 〉Here〈 /A 〉
to Line 30: get XLS file")
第1行和第2行,确定所使用的 Excel对象的维数。
第3行,创建Excel对象。同样,为了工作正确,web服务器上也必须有Excel。
第4行,将Excel的可见性设置为false,这样它就没有界面了。
第5行和第6行,增加一个容纳工作表的工作簿,然后将当前工作表设置成第一个工作
表(这是Excel 在默认状态下创建的)。 还可以用 对象的Add 函数增加一个新的
工作表, 这就允许你的 Excel 文件中有多个工作表。
第8-12行,创建工作表的标题。在这个例子中,我们把每个单元的值都设置成适当的
标题,而且把内部 颜色设置成兰色。你还可以用Range对象同时修改多个单元。
第13-23行,提供从记录集装载所有数据的循环。因为第一行中包含标题,我就在电子
数据表的 第二行开始数据。里面的 For循环把每一列装载到行中,并把内部颜色设置为绿
色。外部循环则为 每一行在记录集中进行循环。
第24行asp服务器, 通过调用()函数,与CSV用同样的函数来创建唯一的文件名。
第25行,进行电子表格的实际保存。可以将表格存储为 Excel中指定的多种格式。
下面的3行进行对象的整理。作为一个好的ASP程序员,就一定要整理所有的对象。
最后,我把到 Excel文件的链接放在页面上以便下载。
我创建了一个样本,对以上讨论过的每个技巧进行示范。要安装样本,只需要把所有
的文件复制到服务器上,用 main.html 启动应用程序。在服务器上需要有 Excel以使用"Na
tive Excel" 选项。 样本使用一个数据库 (无DSN链接)来存储销售数据。
你可以选择一年或一个地区进行销售报告。最后的选项是你希望如何返回数据。可以
看到以下的屏幕映象:
下面的表格中是对样本中提供的所有文件的描述。
文件名 描述
DSN-SQL.asp 包含无DSN链接字符串
.inc 包含ADO常量
.mdb 包含销售数据的一个数据库。包含的销售表格有3个域:year--Tex
t, --Text,sales-amt--
main.html 本文件创建画面的框架并装载初始页
.html 本文件只在第一次创建结果通常所在的画面框架时使用
.html 包含一个表单,用来收集用户的选择来建立报告
.asp 应用程序的内脏。本文件建立SQL声明、确定客户机如何请求将被返回的数
据、执行SQL并按照请求返回数据
大部分代码都相当容易理解。但是我还是要讨论.asp 文件中的一些函数。我
已经演示过如何创建CSV和Excel 文件。
()函数建立一个被请求数据的HTML表格。这个函数既用来作为HTML返回也用于
请求。为了 请求工作,你要注意 . = "appl
/" 是将要执行的最初几行之一。
()函数使用系统日期建立文件名的第一部分。这个文件名将是唯一的,这
样当你试图存储 文件时就可以避免许多麻烦。扩展名( CSV或XLS )在存储文件时应用,这
样就允许同一个函数产生两种类型的文件。
()函数使用表单变量来建立一个SQL声明,与用户的请求相匹配,并将其返回
调用者。
在脚本的最顶部被打开,因为它对于所选择的显示类型是独立的。
t处理从()函数调用生成的SQL声明,使用一个到 97的无DSN链接。
〈 BODY 〉标记中包含的代码仅仅是两个 "if….then" 声明,确定用户所要求的显示
方法。 if声明分流到生成正确返回类型的函数,该返回类型是基于用户的"" 选
择。接着清除链接和记录集对象。
注意: 这个样本没有涉及到用户下载web服务器上创建的文件之后,对这些文件的维护
问题。我建议 这种维护要基于一段时间,时间到期后就删除这些文件。 我不主张把移走这
些文件的负担转嫁到客户身上(通过页面上的链接),因为他们很容易忘记这些事情。
结论
本文演示了将数据输出到一个Excel可读格式的三种方法。 我相信根据用户的不同需
要,这三种方法都有其可用之地。如果你愿意快速但不漂亮地输出到Excel,就用
pe好了。如果你想要一个格式有限但能够装载到许多不同应用程序中的文件,那么CSV格式
适合你。如果你更喜欢包含完整格式、图标或特殊Excel功能,那么创建一个完全的Excel电
子表格是适合的途径。 但愿这些方法能帮助其他程序员满足客户的要求或者至少帮助你选
择正确的途径。
限时特惠:本站持续每日更新海量各大内部创业课程,一年会员仅需要98元,全站资源免费下载
点击查看详情
站长微信:Jiucxh