📄 nb联盟15.htm
字号:
当你点击生成的链接时,就会被提示保存或打开。如果选择打开,文件就在Excel 中打开(假设计算机
上已经安装)。如果选择了保存,就将这个文本文件保存到存储设备上并将它输入各个应用程序中。<BR>
我所讨论的最后一种方法是用Microsoft Excel 对象创建一个实际的Excel(.xls ) 文件。要使用这些对象要求在Web
服务器上安装Excel。使用这些控制可以对格式化有更多的控制(如字体、颜色等), 并允许你进行一切在真正的Excel
应用程序中可以进行的操作。一定要监视你的服务器的性能,因为 Excel
可能成为一个相当大的对象并对性能造成冲击,这取决于你如何使用它以及服务器有多忙。<BR><BR> 我发现在Excel
对象上得到更多信息的最快最简便的方法是使用Visual Basic对象浏览器,观看对象
并使用上下文敏感帮助来得到更多细节。使用这个对象浏览器时:启动Visual Basic, 创建一个工程文件,
增加一个对Microsoft Excel对象库的引用。在 View 菜单下,可以选择一个对象浏览器然后指定Excel
库,看到所有可用的对象。按 F1可得到当前标题的上下文敏感帮助。<BR><BR> 在所提供的样本中把CreateXlsFile()
函数过一遍,就可以看到如何创建一个Excel文件。 基本步骤与 创建
CSV文件的基本相同,只是所创建的是一个Excel工作表。<BR><BR>Line 1: Dim xlWorkSheet<BR>Line
2: Dim xlApplication <BR>Line 3: Set xlApplication =
Server.CreateObject("Excel.Application")<BR>Line 4:
xApplication.Visible = False<BR>Line 5:
xlApplication.Workbooks.Add<BR>Line 6: Set xlWorksheet =
xlApplication.Worksheets(1)<BR>Line 7: xlWorksheet.Cells(1,1).Value
= "Year"<BR>Line 8: xlWorksheet.Cells(1,1).Interior.ColorIndex = 5
<BR>Line 9: xlWorksheet.Cells(1,2).Value = "Region"<BR>Line 10:
xlWorksheet.Cells(1,2).Interior.ColorIndex = 5<BR>Line 11:
xlWorksheet.Cells(1,3).Value = "Sales"<BR>Line 12:
xlWorksheet.Cells(1,3).Interior.ColorIndex = 5<BR>Line 13: iRow =
2<BR>Line 14: If Not oRS.EOF Then<BR>Line 15: Do Until oRS.EOF
<BR>Line 16: For i = 0 To oRS.fields.Count-1<BR>Line 17:
xlWorksheet.Cells(iRow,i + 1).Value = oRS.fields(i)<BR>Line 18:
xlWorkSheet.Cells(iRow,i + 1).Interior.ColorIndex = 4<BR>Line 19:
Next<BR>Line 20: iRow = iRow + 1<BR>Line 21: oRS.MoveNext<BR>Line
22: Loop<BR>Line 23: End If<BR>Line 24: strFile =
GenFileName()<BR>Line 25: xlWorksheet.SaveAs Server.MapPath(".")
& "" & strFile & ".xls"<BR>Line 26: xlApplication.Quit '
Close the Workbook<BR>Line 27: Set xlWorksheet = Nothing<BR>Line 28:
Set xlApplication = Nothing<BR>Line 29: Response.Write("Click 〈 A
HRef=" & strFile & ".xls 〉Here〈 /A 〉 <BR>to Line 30: get XLS
file") <BR><BR> 第1行和第2行,确定所使用的 Excel对象的维数。<BR><BR>
第3行,创建Excel对象。同样,为了工作正确,web服务器上也必须有Excel。<BR><BR>
第4行,将Excel的可见性设置为false,这样它就没有界面了。<BR><BR>
第5行和第6行,增加一个容纳工作表的工作簿,然后将当前工作表设置成第一个工作表(这是Excel 在默认状态下创建的)。 还可以用
Worksheet对象的Add 函数增加一个新的工作表, 这就允许你的 Excel 文件中有多个工作表。<BR><BR>
第8-12行,创建工作表的标题。在这个例子中,我们把每个单元的值都设置成适当的标题,而且把内部
颜色设置成兰色。你还可以用Range对象同时修改多个单元。<BR><BR>
第13-23行,提供从记录集装载所有数据的循环。因为第一行中包含标题,我就在电子数据表的 第二行开始数据。里面的
For循环把每一列装载到行中,并把内部颜色设置为绿色。外部循环则为 每一行在记录集中进行循环。<BR><BR> 第24行,
通过调用GenFileName()函数,与CSV用同样的函数来创建唯一的文件名。<BR><BR>
第25行,进行电子表格的实际保存。可以将表格存储为 Excel中指定的多种格式。<BR><BR>
下面的3行进行对象的整理。作为一个好的ASP程序员,就一定要整理所有的对象。<BR><BR> 最后,我把到
Excel文件的链接放在页面上以便下载。<BR>
我创建了一个样本,对以上讨论过的每个技巧进行示范。要安装样本,只需要把所有的文件复制到服务器上,用 main.html
启动应用程序。在服务器上需要有 Excel以使用"Native Excel" 选项。 样本使用一个Access数据库
(无DSN链接)来存储销售数据。<BR><BR>
你可以选择一年或一个地区进行销售报告。最后的选项是你希望如何返回数据。可以看到以下的屏幕映象:<BR><BR>
<P align=center><IMG src=""></P> 下面的表格中是对样本中提供的所有文件的描述。<BR><BR>文件名
描述 <BR>DSN-SQL.asp 包含无DSN链接字符串 <BR>adovbs.inc 包含ADO常量 <BR>TestDB.mdb
包含销售数据的一个Access97数据库。包含的销售表格有3个域:year--Text,
region--Text,sales-amt--numeric <BR>main.html 本文件创建画面的框架并装载初始页
<BR>welcome.html 本文件只在第一次创建结果通常所在的画面框架时使用 <BR>request.html
包含一个表单,用来收集用户的选择来建立报告 <BR>runquery.asp
应用程序的内脏。本文件建立SQL声明、确定客户机如何请求将被返回的数据、执行SQL并按照请求返回数据 <BR><BR>
大部分代码都相当容易理解。但是我还是要讨论runquery.asp 文件中的一些函数。我已经演示过如何创建CSV和Excel
文件。<BR><BR>
GenHTML()函数建立一个被请求数据的HTML表格。这个函数既用来作为HTML返回也用于ContentType请求。为了
ContentType请求工作,你要注意 Response.ContentType = "application/msexcel"
是将要执行的最初几行之一。<BR><BR>
GenFileName()函数使用系统日期建立文件名的第一部分。这个文件名将是唯一的,这样当你试图存储
文件时就可以避免许多麻烦。扩展名( CSV或XLS )在存储文件时应用,这样就允许同一个函数产生两种类型的文件。<BR><BR>
BuildSQL()函数使用表单变量来建立一个SQL声明,与用户的请求相匹配,并将其返回调用者。 <BR><BR>
Recordset在脚本的最顶部被打开,因为它对于所选择的显示类型是独立的。recordset处理从BuildSQL()函数调用生成的SQL声明,使用一个到Access
97的无DSN链接。<BR><BR> 〈 BODY 〉标记中包含的代码仅仅是两个 "if….then"
声明,确定用户所要求的显示方法。 if声明分流到生成正确返回类型的函数,该返回类型是基于用户的"ReturnAS"
选择。接着清除链接和记录集对象。<BR><BR> 注意:
这个样本没有涉及到用户下载web服务器上创建的文件之后,对这些文件的维护问题。我建议 这种维护要基于一段时间,时间到期后就删除这些文件。
我不主张把移走这些文件的负担转嫁到客户身上(通过页面上的链接),因为他们很容易忘记这些事情。<BR><BR>
结论<BR><BR> 本文演示了将数据输出到一个Excel可读格式的三种方法。
我相信根据用户的不同需要,这三种方法都有其可用之地。如果你愿意快速但不漂亮地输出到Excel,就用ContentType好了。如果你想要一个格式有限但能够装载到许多不同应用程序中的文件,那么CSV格式适合你。如果你更喜欢包含完整格式、图标或特殊Excel功能,那么创建一个完全的Excel电子表格是适合的途径。
但愿这些方法能帮助其他程序员满足客户的要求或者至少帮助你选择正确的途径。<BR><BR></FONT></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE align=center border=0 cellPadding=2 cellSpacing=0 id=footer width=770>
<TBODY>
<TR>
<TD align=middle class=tdt>
<P align=center></P></TD></TR></TBODY></TABLE><BR></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -