ASP操作Excel技术总结

原创 2004年08月22日 22:19:00

ASP操作Excel技术总结<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

目录

一、 环境配置

二、 ASPExcel的基本操作

三、 ASP操作Excel生成数据表

四、 ASP操作Excel生成Chart

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

六、 附录

正文

一、 环境配置

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

1Win9x+PWS+Office

2Win2000 Professional+PWS+Office

3Win2000 Server+IIS+Office

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

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

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

2 笔者开发ASP代码喜欢用FrontPage,结果发现如果FrontPage打开(服务器端),对象创建出现不稳定现象,时而成功时而不成功。扩展考察后发现,Office系列的软件如果在服务器端运行,则Excel对象的创建很难成功。

服务器端还必须要设置的一点是COM组件的操作权限。在命令行键入“DCOMCNFG”,则进入COM组件配置界面,选择Microsoft Excel后点击属性按钮,将三个单选项一律选择自定义,编辑中将Everyone加入所有权限。保存完毕后重新启动服务器。

客户端的环境配置没发现什么特别讲究的地方,只要装有OfficeIE即可,版本通用的好象都可以。

二、 ASPExcel的基本操作

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

补充两点:

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

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

七、例子

<%

On Error Resume Next

 

strAddr = Server.MapPath(".")

 

set objExcelApp = CreateObject("Excel.Application")

objExcelApp.DisplayAlerts = false

objExcelApp.Application.Visible = false

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

set objExcelBook = objExcelApp.ActiveWorkBook

set objExcelSheets = objExcelBook.Worksheets

set objExcelSheet = 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="Internet Explorer"

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 = "Visitors log for each week shown in browsers percentage"

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

objExcelApp.ActiveChart.Location 1

'objExcelApp.ActiveChart.HasDataTable = True

'objExcelApp.ActiveChart.DataTable.ShowLegendKey = True

 

objExcelBook.SaveAs strAddr & "/Temp/Excel.xls"

objExcelApp.Quit

set objExcelApp = Nothing

%>

<!DOCTYPE HTML PUBLIC "-//W<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />3C//DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<TITLE> New Document </TITLE>

<META NAME="Generator" CONTENT="Microsoft FrontPage 5.0">

<META NAME="Author" CONTENT="">

<META NAME="Keywords" CONTENT="">

<META NAME="Description" CONTENT="">

</HEAD>

<BODY>

</BODY>

</HTML>

我在这儿再提供。将网页中表格,保存的方法。

例如:TABLE ID=MYTABLE

<!--生成EXCEL文件-->

sub btnExport_onclick()

dim objExcel

on error resume next

Set objExcel = CreateObject("excel.application")

   With objExcel

    .visible =true

    .workbooks.add

    .sheets("sheet1").select

    

   End with

   m_row="0"

      

    for a=0 to document.all.mytable.rows.length-1

    m_row = cstr(int (m_row)+1)

    for b=0 to document.all.mytable.rows(a).cells.length-1

    m_col = chr(asc("A")+b)

    objexcel.range(m_col&m_row).select

    M_value = document.all.mytable.rows(a).cells(b).innerText

      objexcel.activecell.value=cstr(m_value)

     next

    next

   objexcel.visible=true

   objexcel.range("A1").select

End sub

ASP操作Excel技术总结

目录 一、  环境配置 二、  ASP对Excel的基本操作 三、  ASP操作Excel生成数据表 四、  ASP操作Excel生成Chart图 五、  服务器端Excel文件浏览、下载、删除方案 ...
  • vegas_lee
  • vegas_lee
  • 2014年05月22日 15:39
  • 47

POI操作Excel常用方法总结

目前常见读写Excel的工具类开源javaAPI有两种方式, 一个是JXL(Java Excel API) 官网地址:http://jexcelapi.sourceforge.net/ 一个是Ap...
  • wuyou1336
  • wuyou1336
  • 2016年10月18日 17:29
  • 919

asp连接excel数据库

asp连接excel的方法与代码:   connstrxls="DBQ=d:\newexcel.xls;DefaultDir=;DRIVER={Microsoft Excel Driver (...
  • quxiantao
  • quxiantao
  • 2014年05月15日 14:51
  • 1173

Asp导出数据库数据到Excel

最近做ASP,需要导出数据库数据到Excel中,结果卡住好久没有进展。 今天终于解决了,总结下过程: 1.整体代码 ...
  • u010393758
  • u010393758
  • 2015年12月29日 03:19
  • 2816

asp操作excel大全

1.ASP对Excel的基本操作 (1) 建立Excel对象 创建Excel对象可以通过下面的代码来实现: set objExcelApp = CreateObject("Excel.App...
  • sscrazy
  • sscrazy
  • 2014年02月21日 17:10
  • 595

用第三方控件导出Excel,相对简单

ASP.NET - 读写Excel - MyXls - 三方控件使用说明 第三方工具下载:http://myxls.in2bits.org/WIKI/Downloads.ashx 1、...
  • zhuyu19911016520
  • zhuyu19911016520
  • 2013年01月08日 15:51
  • 2979

PHP操作mysql数据库总结

使用PHP一些函数来操作mysql数据库
  • Drug_
  • Drug_
  • 2017年06月05日 20:33
  • 443

先锋缓存类(极度加速ASP和提高执行效率)

clsCache 公共属性  引用内容:  valid   返回是否有效。true表示有效,false表示无效。只读。   Version  获取类的版本信息。只读。...
  • lishimin1012
  • lishimin1012
  • 2015年12月31日 11:24
  • 868

ASP导出Excel方法总结

#region Excel导出 /// /// 导出DataSet 到 Excel /// /// DataTable ...
  • yangpengfei813
  • yangpengfei813
  • 2013年01月08日 10:01
  • 229

ArcGIS教程:Arcmap技巧总结

Arcmap的一些小技巧与编程方式
  • u010687924
  • u010687924
  • 2015年04月21日 12:15
  • 1195
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP操作Excel技术总结
举报原因:
原因补充:

(最多只允许输入30个字)