发新话题
打印

[转载]ASP操作Excel技术总结

[转载]ASP操作Excel技术总结

信息来源:http://blog.mvpcn.net/emhuangzi/archive/2005/08/23/16960.aspx

目录  
一、        环境配置  
二、        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”,保证每次程序执行完不留下死进程。
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

这个方法不是很可行。
com+调用时容易使excel无法正常退出。这样导出excel一次没退出后就不正常了。
导出excel一个更简单的方法是直接在网页上显示表格。然后在head标记前加:<%Response.ContentType = "application/vnd.ms-excel" %>
至于打印,有两种方法一种先导出到excel里调和它的打印功能。(可以先在excel操作时录制宏,这样就可以看到vb代码再修改为vbscript)
二是直接用网页打印。
在我纯真年少時,有一個女生,她願意爲我失去生命,她意志堅定地說:你再纏著我,我就去死! 在我負笈外地時,有一個女生,她願意等我到下輩子,她溫柔婉約地說:你想成爲我男友?等下輩子!! 在我窮困潦倒時,有一個女生,她願意與我共赴黃泉,她眨著紅眼說:你再不還錢,我和你同歸于盡!

TOP

我有在动网看过一篇 这方面的文章,不会出现excel无法正常退出的情况。
在我纯真年少時,有一個女生,她願意爲我失去生命,她意志堅定地說:你再纏著我,我就去死! 在我負笈外地時,有一個女生,她願意等我到下輩子,她溫柔婉約地說:你想成爲我男友?等下輩子!! 在我窮困潦倒時,有一個女生,她願意與我共赴黃泉,她眨著紅眼說:你再不還錢,我和你同歸于盡!

TOP

发新话题