目录一、环境配置二、ASP对Excel的基本操作三、ASP操作Excel生成数据表四、ASP操作Excel生成Chart图五、服务器端Excel文件浏览、下载、删除方案六、附录正文一、环境配置服务器端的环境配置从参考资料上看,微软系列的配置应该都行,即:1.Win9x+PWS+Office2.Win2000Professional+PWS+Office3.Win2000Server+IIS+Office目前笔者测试成功的环境是后二者。Office的版本没有特殊要求,考虑到客户机配置的不确定性和下兼容特性,建议服务器端Office版本不要太高,以防止客户机下载后无法正确显示。服务器端环境配置还有两个偶然的发现是:1.笔者开发机器上原来装有金山的WPS2002,结果Excel对象创建始终出现问题,卸载WPS2002后,错误消失。2.笔者开发ASP代码喜欢用FrontPage,结果发现如果FrontPage打开(服务器端),对象创建出现不稳定现象,时而成功时而不成功。扩展考察后发现,Office系列的软件如果在服务器端运行,则Excel对象的创建很难成功。服务器端还必须要设置的一点是COM组件的操作权限。在命令行键入“DCOMCNFG”,则进入COM组件配置界面,选择MicrosoftExcel后点击属性按钮,将三个单选项一律选择自定义,编辑中将Everyone加入所有权限。保存完毕后重新启动服务器。客户端的环境配置没发现什么特别讲究的地方,只要装有Office和IE即可,版本通用的好象都可以。二、ASP对Excel的基本操作1、建立Excel对象setobjExcelApp=CreateObject("Excel.Application")objExcelApp.DisplayAlerts=false不显示警告objExcelApp.Application.Visible=false不显示界面2、新建Excel文件objExcelApp.WorkBooks.addsetobjExcelBook=objExcelApp.ActiveWorkBooksetobjExcelSheets=objExcelBook.WorksheetssetobjExcelSheet=objExcelBook.Sheets(1)3、读取已有Excel文件strAddr=Server.MapPath(".")objExcelApp.WorkBooks.Open(strAddr&"/Templet/Table.xls")setobjExcelBook=objExcelApp.ActiveWorkBooksetobjExcelSheets=objExcelBook.WorksheetssetobjExcelSheet=objExcelBook.Sheets(1)4、另存Excel文件objExcelBook.SaveAsstrAddr&"/Temp/Table.xls"5、保存Excel文件objExcelBook.Save(笔者测试时保存成功,页面报错。)6、退出Excel操作objExcelApp.Quit一定要退出setobjExcelApp=Nothing三、ASP操作Excel生成数据表1、在一个范围内插入数据objExcelSheet.Range("B3:k3").value=Array("67","87","5","9","7","45","45","54","54","10")2、在一个单元格内插入数据objExcelSheet.Cells(3,1).value="InternetExplorer"3、选中一个范围4、单元格左边画粗线条5、单元格右边画粗线条6、单元格上边画粗线条7、单元格下边画粗线条8、单元格设定背景色9、合并单元格10、插入行11、插入列四、ASP操作Excel生成Chart图1、创建Chart图objExcelApp.Charts.Add2、设定Chart图种类objExcelApp.ActiveChart.ChartType=97注:二维折线图,4;二维饼图,5;二维柱形图,513、设定Chart图标题objExcelApp.ActiveChart.HasTitle=TrueobjExcelApp.ActiveChart.ChartTitle.Text="AtestChart"4、通过表格数据设定图形objExcelApp.ActiveChart.SetSourceDataobjExcelSheet.Range("A1:k5"),15、直接设定图形数据(推荐)objExcelApp.ActiveChart.SeriesCollection.NewSeriesobjExcelApp.ActiveChart.SeriesCollection(1).Name="=""333"""objExcelApp.ActiveChart.SeriesCollection(1).values="={1,4,5,6,2}"6、绑定Chart图objExcelApp.ActiveChart.Location17、显示数据表objExcelApp.ActiveChart.HasDataTable=True8、显示图例objExcelApp.ActiveChart.DataTable.ShowLegendKey=True五、服务器端Excel文件浏览、下载、删除方案浏览的解决方法很多,“Location.href=”,“Navigate”,“Response.Redirect”都可以实现,建议用客户端的方法,原因是给服务器更多的时间生成Excel文件。下载的实现要麻烦一些。用网上现成的服务器端下载组件或自己定制开发一个组件是比较好的方案。另外一种方法是在客户端操作Excel组件,由客户端操作服务器端Excel文件另存至客户端。这种方法要求客户端开放不安全ActiveX控件的操作权限,考虑到通知每个客户将服务器设置为可信站点的麻烦程度建议还是用第一个方法比较省事。删除方案由三部分组成:A:同一用户生成的Excel文件用同一个文件名,文件名可用用户ID号或SessionID号等可确信不重复字符串组成。这样新文件生成时自动覆盖上一文件。B:在Global.asa文件中设置Session_onEnd事件激发时,删除这个用户的Excel暂存文件。C:在Global.asa文件中设置Application_onStart事件激发时,删除暂存目录下的所有文件。注:建议目录结构/Src代码目录/Templet模板目录/Temp暂存目录六、附录出错时Excel出现的死进程出现是一件很头疼的事情。在每个文件前加上“onErrorResumeNext”将有助于改善这种情况,因为它会不管文件是否产生错误都坚持执行到“Application.Quit”,保证每次程序执行完不留下死进程。补充两点:1、其他Excel具体操作可以通过录制宏来解决。2、服务器端打开SQL企业管理器也会产生问题。<%onErrorResumeNextstrAddr=Server.MapPath(".")setobjExcelApp=CreateObject("Excel.Application")objExcelApp.DisplayAlerts=falseobjExcelApp.Application.Visible=falseobjExcelApp.WorkBooks.Open(strAddr&"/Templet/Null.xls")setobjExcelBook=objExcelApp.ActiveWorkBooksetobjExcelSheets=objExcelBook.WorksheetssetobjExcelSheet=objExcelBook.Sheets(1)objExcelSheet.Range("B2:k2").value=Array("Week1","Week2","Week3","Week4","Week5","Week6","Week7","Week8","Week9","Week10")objExcelSheet.Range("B3:k3").value=Array("67","87","5","9","7","45","45","54","54","10")objExcelSheet.Range("B4:k4").value=Array("10","10","8","27","33","37","50","54","10","10")objExcelSheet.Range("B5:k5").value=Array("23","3","86","64","60","18","5","1","36","80")objExcelSheet.Cells(3,1).value="InternetExplorer"objExcelSheet.Cells(4,1).value="Netscape"objExcelSheet.Cells(5,1).value="Other"objExcelSheet.Range("b2:k5").SelectobjExcelApp.Charts.AddobjExcelApp.ActiveChart.ChartType=97objExcelApp.ActiveChart.BarShape=3objExcelApp.ActiveChart.HasTitle=TrueobjExcelApp.ActiveChart.ChartTitle.Text="Visitorslogforeachweekshowninbrowserspercentage"objExcelApp.ActiveChart.SetSourceDataobjExcelSheet.Range("A1:k5"),1objExcelApp.ActiveChart.Location1'objExcelApp.ActiveChart.HasDataTable=True'objExcelApp.ActiveChart.DataTable.ShowLegendKey=TrueobjExcelBook.SaveAsstrAddr&"/Temp/Excel.xls"objExcelApp.QuitsetobjExcelApp=Nothing%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"><HTML><HEAD><TITLE>NewDocument</TITLE><METANAME="Generator"CONTENT="MicrosoftFrontPage5.0"><METANAME="Author"CONTENT=""><METANAME="Keywords"CONTENT=""><METANAME="Description"CONTENT=""></HEAD><BODY></BODY></HTML>