文章探索:   分类:    关键字:  
  + 栏目导航
  + 相关文章
asp中有关字符编码转换的几个函数
绝妙的asp生成静态页面html函数
Asp计算页面执行时间
一个简单的用存储过程分页
将asp页面转换成htm页面
ASP网站漏洞解析及黑客入侵防范方法
URL编码与SQL注入
几种常用排序算法(asp)
ASP调用带参数存储过程的几种方式
实用的ASP连接数据库的函数
ASP如何获取真实IP地址
ASP中怎么实现SQL数据库备份、恢复
判断Cookies是否处于开启状态
怎样才能将服务器端文件夹下的文件,..
几行Asp代码实现防止表单重复提交
用ASP设计网站在线人数统计程序
asp论坛在线人数统计研究
如何用ASP远程在数据库中创建Table
用ASP调用SQL Server的视图和存储过程
Asp与XML的关系
ASP读取EXCEL
在ASP中使用Oracle数据库技巧
一个通过web.Mail发送邮件的类
几种打开记录集方式的比较
购物车范例(购物车页面 )
如何使用FSO搜索硬盘文件
GB码和BIG5码的互换技术
用ASP开发WEB日期选择器
一个投票系统的源程序(coveryourasp.c..
列出服务器上的打印机


技术教程 -> ASP教程 ->  
ASP操作Excel技术总结
来源:转载   人气:645   录入时间:2007-11-8
    
   目录
   一、  环境配置
   二、  ASP对Excel的基本操作
   三、  ASP操作Excel生成数据表
   四、  ASP操作Excel生成Chart图
   五、  服务器端Excel文件浏览、下载、删除方案
   六、  附录
   
   正文
   一、  环境配置
   服务器端的环境配置从参考资料上看,微软系列的配置应该都行,即:
   1.Win9x+PWS+Office
   2.Win2000 Professional+PWS+Office
   3.Win2000 Server+IIS+Office
   目前笔者测试成功的环境是后二者。Office的版本没有特殊要求,考虑到客户机配置的不确定性和下兼容特性,建议服务器端Office版本不要太高,以防止客户机下载后无法正确显示。
   服务器端环境配置还有两个偶然的发现是:
   1.  笔者开发机器上原来装有金山的WPS2002,结果Excel对象创建始终出现问题,卸载WPS2002后,错误消失。
   2.  笔者开发ASP代码喜欢用FrontPage,结果发现如果FrontPage打开(服务器端),对象创建出现不稳定现象,时而成功时而不成功。扩展考察后发现,Office系列的软件如果在服务器端运行,则Excel对象的创建很难成功。
   服务器端还必须要设置的一点是COM组件的操作权限。在命令行键入“DCOMCNFG”,则进入COM组件配置界面,选择Microsoft Excel后点击属性按钮,将三个单选项一律选择自定义,编辑中将Everyone加入所有权限。保存完毕后重新启动服务器。
   客户端的环境配置没发现什么特别讲究的地方,只要装有Office和IE即可,版本通用的好象都可以。
   
   二、  ASP对Excel的基本操作
   1、  建立Excel对象
   set objExcelApp = CreateObject("Excel.Application")
   objExcelApp.DisplayAlerts = false    不显示警告
   objExcelApp.Application.Visible = false    不显示界面
   2、  新建Excel文件
   objExcelApp.WorkBooks.add
   set objExcelBook = objExcelApp.ActiveWorkBook
   set objExcelSheets = objExcelBook.Worksheets
   set objExcelSheet = objExcelBook.Sheets(1)
   3、  读取已有Excel文件
   strAddr = Server.MapPath(".")
   objExcelApp.WorkBooks.Open(strAddr & "\Templet\Table.xls")
   set objExcelBook = objExcelApp.ActiveWorkBook
   set objExcelSheets = objExcelBook.Worksheets
   set objExcelSheet = objExcelBook.Sheets(1)
   4、  另存Excel文件
   objExcelBook.SaveAs strAddr & "\Temp\Table.xls"
   5、  保存Excel文件
   objExcelBook.Save    (笔者测试时保存成功,页面报错。)
   6、  退出Excel操作
   objExcelApp.Quit  一定要退出
   set objExcelApp = 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="Internet Explorer"
   3、  选中一个范围
   4、  单元格左边画粗线条
   5、  单元格右边画粗线条
   6、  单元格上边画粗线条
   7、  单元格下边画粗线条
   8、  单元格设定背景色
   9、  合并单元格
   10、  插入行
   11、  插入列
   
   四、  ASP操作Excel生成Chart图
   1、  创建Chart图
   objExcelApp.Charts.Add
   2、  设定Chart图种类
   objExcelApp.ActiveChart.ChartType = 97
   注:二维折线图,4;二维饼图,5;二维柱形图,51
   3、  设定Chart图标题
   objExcelApp.ActiveChart.HasTitle = True
   objExcelApp.ActiveChart.ChartTitle.Text = "A test Chart"
   4、  通过表格数据设定图形
   objExcelApp.ActiveChart.SetSourceData objExcelSheet.Range("A1:k5"),1
   5、  直接设定图形数据(推荐)
   objExcelApp.ActiveChart.SeriesCollection.NewSeries
   objExcelApp.ActiveChart.SeriesCollection(1).Name = "=""333"""
   objExcelApp.ActiveChart.SeriesCollection(1).Values = "={1,4,5,6,2}"
   6、  绑定Chart图
   objExcelApp.ActiveChart.Location 1
   7、  显示数据表
   objExcelApp.ActiveChart.HasDataTable = True
   8、  显示图例
   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出现的死进程出现是一件很头疼的事情。在每个文件前加上“On Error Resume Next”将有助于改善这种情况,因为它会不管文件是否产生错误都坚持执行到“Application.Quit”,保证每次程序执行完不留下死进程。
   




Copyright(C)2007-2024 广州市佳沛数码科技有限公司 版权所有
公司地址: 广州市荔湾区东漖北路560号511室
电话:020-81803473 传真:020-81544987