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

转载 2005年03月03日 21:45:00

ASP操作Excel技术总结

ASP操作Excel技术总结

目录

一、 环境配置

二、 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 "-//W3C//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生成数据表四、 ASP操作Excel生成Chart图五、 服务器端Excel文件浏览、下载、删...

ASP操作Excel技术总结

目录一、环境配置二、ASP对Excel的基本操作三、ASP操作Excel生成数据表四、ASP操作Excel生成Chart图五、服务器端Excel文件浏览、下载、删除方案六、附录正文一、环境配置服务器端...

ASP操作Excel技术总结

  • 2012-05-07 10:47
  • 40KB
  • 下载

ASP操作Excel技术总结

  • 2007-08-23 21:36
  • 26KB
  • 下载

操作 Excel 的类(转贴别人的)

没时间自己写,所以先借人的类库放这里,虽然我认为没用。     /********************************************************    * Code ...

移动终端管理系统的关键技术研究 - 转贴

移动终端管理系统的关键技术研究2007年9月10日 10:50中国联通网站1、前言    随着移动数据业务日趋丰富和复杂,业务对终端的依赖性越来越高。移动终端作为用户使用移动业务的载体,已成为移动运营...

转贴:--技术管理工作浅谈

最近和开发区几个小公司的管理者聊天,大家都抱怨各自公司的技术管理难做,有的说:公司发展了快10年,却没有任何技术积累,技术全在那些技术人员的脑子里,技术人员走了,技术也带走了,公司又得从头再招人,重复...

转贴:Linux网络环境iSCSI技术的三种方式

Linux网络环境iSCSI技术的实现主要有三种方式
  • wwwlh
  • wwwlh
  • 2011-04-19 15:26
  • 1180

java操作excel技术总结

  • 2015-01-29 15:09
  • 34KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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