ASP操作Excel技术总结

ASP操作Excel技术总结

目录

一、 环境配置

二、 ASP对Excel的基本操作

三、 ASP操作Excel生成数据表

四、 ASP操作Excel生成Chart图

五、 服务器端Excel文件浏览、下载、删除方案

六、 附录

正文

一、 环境配置

服务器端的环境配置从参考资料上看,微软系列的配置应该都行,即:

1.Win9x+PWS+Office

2.Win20xx Professional+PWS+Office

3.Win20xx Server+IIS+Office

目前笔者测试成功的环境是后二者。Office的版本没有特殊要求,考虑到客户机配置的不确定性和下兼容特性,建议服务器端Office版本不要太高,以防止客户机下载后无法正确显示。 服务器端环境配置还有两个偶然的发现是:

1. 笔者开发机器上原来装有金山的WPS20xx,结果Excel对象创建始终出现问题,卸载WPS20xx后,错误消失。

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 = "="

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”,保证每次程序执行完不留下死进程。

************************************************************

把我的SIMS程序的一个文件给你吧。就是Access导出EXCEL文件的。

<!--#include file=connJob.asp-->

<!--#include file=Object.asp-->

<!--#include file=CheckUser.asp-->

<html>

<head>

<meta http-equiv="Content-Language" content="zh-cn">

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<LINK href="face.css" type=text/css rel=stylesheet>

<title>导出Excel表</title>

</head>

<body class="BodyMain">

<%

if UserID="" then

call CloseConn()

Response.Redirect "Index.asp"

end if

if UserID>1 then

Call Main

else

Response.write NoView

end if

Sub Main

Dim ExcelSql

Dim rs

ExcelSql=request.form("ExcelSql")

'Response.write ExcelSql

'exit sub

On error resume next

Set rs=conn.execute(ExcelSql)

if err.Number<>0 then

Response.write err.Description & " " & aspButton("返回上一页",1)

rs.close

set rs=nothing

exit sub

end if

if rs.eof then

Response.write "没有记录可导出! " & aspButton("返回上一页",1)

rs.close

set rs=nothing

exit sub

end if

Dim App,Book,Shts,Sht

set App = CreateObject("Excel.Application")

App.DisplayAlerts = false '不显示警告

App.Application.Visible = false '不显示界面

'添加Excel表

App.WorkBooks.add

set Book = App.ActiveWorkBook

set Shts = Book.Worksheets

set Sht = Book.Sheets(1)

Sht.Range("A1:O1").Value = Array("学号", "姓名", "系别", "专业", "月份", "是否暂缓", "ABC类型", "单位名", "单位城市", "联系电话","联系人","单位性质","岗位名称","就业状态","审核")

Dim r '行数

r=2 '从第二行开始写

Dim DeferOctEmp,IsCheck

do while not rs.eof

If rs("DeferOctEmp") Then

DeferOctEmp="是"

else

DeferOctEmp="否"

end if

If rs("IsCheck")=3 then

IsCheck="系主任审核"

elseif rs("IsCheck")>=4 then

IsCheck="就业指导中心审核"

else

IsCheck="未审核"

end if

Sht.Range("A"&r&":O"&r).Value=Array(cstr(rs("StudentID")), rs("StudentName"), rs("DepartmentName"), rs("SpecialtyName"), rs("CountMonth"), DeferOctEmp, rs("ABCsort"), rs("CompanyName"), rs("CityName"), rs("CompanyPhone"),rs("LinkName"),rs("CompanyType"),rs("JobAppellation"),rs("ObtainEmpType"),IsCheck)

rs.movenext

r=r+1

loop

rs.close

set rs=nothing

'设置自动列宽

Sht.Range("A1:O"&(r-1)).Columns.AutoFit

'保存Excel文件

Dim ExcelFile

ExcelFile="Excel/"&UserID&".xls"

Book.SaveAs Server.MapPath(ExcelFile)

if err.Number<>0 then

Response.write err.Description & " " & aspButton("返回上一页",1)

App.Quit

set App = Nothing exit sub

end if

Book.Save

App.Quit

set App = Nothing

Response.Redirect ExcelFile End Sub

conn.close

set conn=nothing %>

</body>

</html>

 

第二篇:ASP操作Excel技术总结

ASP操作Excel技术总结

一、环境配置

二、ASP对Excel的基本操作

三、ASP操作Excel生成数据表

四、ASP操作Excel生成Chart图

五、服务器端Excel文件浏览、下载、删除方案

六、附录正文

一、环境配置

服务器端的环境配置从参考资料上看,微软系列的配置应该都行,即:

1.Win9x+PWS+Office

2.Win20xxProfessional+PWS+Office

3.Win20xxServer+IIS+Office

目前笔者测试成功的环境是后二者。Office的版本没有特殊要求,考虑到客户机配置的不确定性和下兼容特性,建议服务器端Office版本不要太高,以防止客户机下载后无法正确显示。

服务器端环境配置还有两个偶然的发现是:

1.笔者开发机器上原来装有金山的WPS20xx,结果Excel对象创建始终出现问题,卸载WPS20xx后,错误消失。

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.add

setobjExcelBook=objExcelApp.ActiveWorkBook

setobjExcelSheets=objExcelBook.Worksheets

setobjExcelSheet=objExcelBook.Sheets(1)

3、读取已有Excel文件

strAddr=Server.MapPath(".")

objExcelApp.WorkBooks.Open(strAddr&"\Templet\Table.xls")

setobjExcelBook=objExcelApp.ActiveWorkBook

setobjExcelSheets=objExcelBook.Worksheets

setobjExcelSheet=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.Add

2、设定Chart图种类

objExcelApp.ActiveChart.ChartType=97

注:二维折线图,4;二维饼图,5;二维柱形图,51

3、设定Chart图标题

objExcelApp.ActiveChart.HasTitle=True

objExcelApp.ActiveChart.ChartTitle.Text="AtestChart"

4、通过表格数据设定图形

objExcelApp.ActiveChart.SetSourceDataobjExcelSheet.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.Location1

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出现的死进程出现是一件很头疼的事情。在每个文件前加上

“OnErrorResumeNext”将有助于改善这种情况,因为它会不管文件是否产生错误都坚持执行到“Application.Quit”,保证每次程序执行完不留下死进程。

补充两点:

1、其他Excel具体操作可以通过录制宏来解决。

2、服务器端打开SQL企业管理器也会产生问题。

<%

OnErrorResumeNextstrAddr=Server.MapPath(".")setobjExcelApp=CreateObject("Excel.Application")

objExcelApp.DisplayAlerts=false

objExcelApp.Application.Visible=false

objExcelApp.WorkBooks.Open(strAddr&"\Templet\Null.xls")

setobjExcelBook=objExcelApp.ActiveWorkBook

setobjExcelSheets=objExcelBook.Worksheets

setobjExcelSheet=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").Select objExcelApp.Charts.Add

objExcelApp.ActiveChart.ChartType=97

objExcelApp.ActiveChart.BarShape=3

objExcelApp.ActiveChart.HasTitle=True

objExcelApp.ActiveChart.ChartTitle.Text=

"Visitorslogforeachweekshowninbrowserspercentage"

objExcelApp.ActiveChart.SetSourceDataobjExcelSheet.Range("A1:k5"),1

objExcelApp.ActiveChart.Location1

'objExcelApp.ActiveChart.HasDataTable=True

'objExcelApp.ActiveChart.DataTable.ShowLegendKey=TrueobjExcelBook.

SaveAsstrAddr&"\Temp\Excel.xls"objExcelApp.Quit

setobjExcelApp=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>

相关推荐