ASP操作Excel技术总结

简介: ASP操作Excel技术总结 目录 一、 环境配置 二、 ASP对Excel的基本操作 三、 ASP操作Excel生成数据表 四、 ASP操作Excel生成Chart图 五、 服务器端Excel文件浏览、下载、删除方案 六、 附录 正文 一、 环境配置 服务器端的环境配置从参考资料上看,微软系列的配置应该都行,即: 1.Win9x+PWS+Office 2.Win2000 Professional+PWS+Office 3.Win2000 Server+IIS+Office 目前笔者测试成功的环境是后二者。

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

目录
相关文章
|
1月前
|
Java Apache
EasyPOI操作Excel从零入门
我们不造轮子,只是轮子的搬运工。(其实最好是造轮子,造比别人好的轮子)开发中经常会遇到excel的处理,导入导出解析等等,java中比较流行的用poi,但是每次都要写大段工具类来搞定这事儿,此处推荐一个别人造好的轮子,EasyPOI封装了Apache的POI技术,实现了基本的Excel导入、导出从此不再为Excel操作头疼~
20 2
EasyPOI操作Excel从零入门
|
1月前
|
存储 数据处理 索引
Python操作Excel常用方法汇总
Python操作Excel常用方法汇总
34 0
|
2月前
|
API
Poi 中文API文档 「40种操作 Excel文件的姿势」
Poi 中文API文档 「40种操作 Excel文件的姿势」
121 0
|
5月前
|
开发框架 算法 .NET
一个简单高效低内存的.NET操作Excel开源框架 - MiniExcel
一个简单高效低内存的.NET操作Excel开源框架 - MiniExcel
|
6月前
|
Python Windows
编程小白的自学笔记十六(python办公自动化操作EXCEL表格)
编程小白的自学笔记十六(python办公自动化操作EXCEL表格)
|
6月前
|
存储 API iOS开发
编程小白的自学笔记十五(python办公自动化操作EXCEL表格)
编程小白的自学笔记十五(python办公自动化操作EXCEL表格)
|
7月前
|
数据库连接 数据处理 数据库
怎么才算精通Excel呢?是能够编译出多层复杂的公式?还是用VBA代码实现Excel缺失的功能?当Excel能够实现数据报表看板、当Excel能够制作有趣的漫画,有没有启发你的代码编写创意?你都见过哪些真正“精通Excel”的操作?
怎么才算精通Excel呢?是能够编译出多层复杂的公式?还是用VBA代码实现Excel缺失的功能?当Excel能够实现数据报表看板、当Excel能够制作有趣的漫画,有没有启发你的代码编写创意?你都见过哪些真正“精通Excel”的操作?
|
25天前
|
Python
python使用tkinter库,封装操作excel为GUI程序
python使用tkinter库,封装操作excel为GUI程序
|
3月前
|
缓存 Java 关系型数据库
Java使用POI操作Excel
Java使用POI操作Excel
34 0