ASP生成Excel文件方法

ASP生成Excel文件方法
ASP生成Excel文件方法

ASP生成Excel文件方法

方法一:导出到csv文件,存放在服务器端任一路径,然后给客户下载优点:

1、可以进行身份认证后给客户下载,如果放到非web目录就没有对应的url,客户无法随时下载。

2、也是因为生成了文件,所以占用了服务器的空间,但是可以把文件名存放到数据库,再次给客户下载的时候不需要重复生成文件。

3、csv文件是文本文件,逗号隔开字段,回车隔开行,易于数据导入导出。

实现方法:

SqlConnection conn=new SqlConnection("conn"]);

SqlDataAdapter da=new SqlDataAdapter("select*from tb1",conn);

DataSet ds=new DataSet();

da.Fill(ds,"table1");

DataTable dt=ds.Tables["table1"];

string name="downloadurl"].ToString()+"yyyyMMdd")+new

Random(".csv";//存放到web.config中downloadurl指定的路径,文件格式为当前日期+4位随机数

FileStream fs=new

FileStream(name,FileMode.Create,FileAccess.Write);

StreamWriter sw=new StreamWriter(fs,"gb2312"));

sw.WriteLine("自动编号,姓名,年龄");

foreach(DataRow dr in dt.Rows)

{

sw.WriteLine(dr["ID"]+","+dr["vName"]+","+dr["iAge"]);

}

sw.Close();

Response.AddHeader("Content-Disposition","attachment;

filename="+Server.UrlEncode(name));

Response.ContentType="application/ms-excel";//指定返回的是一个不能被客户端读取的流,必须被下载

Response.WriteFile(name);//把文件流发送到客户端

Response.End();

方法二:导出到csv文件,不存放到服务器,直接给浏览器输出文件流优点:

1、随时生成,不需要占用资源

2、可以结合身份认证

3、同样利于数据交换

实现方法:

SqlConnection conn=new SqlConnection("conn"]);

SqlDataAdapter da=new SqlDataAdapter("select*from tb1",conn);

DataSet ds=new DataSet();

da.Fill(ds,"table1");

DataTable dt=ds.Tables["table1"];

StringWriter sw=new StringWriter();

sw.WriteLine("自动编号,姓名,年龄");

foreach(DataRow dr in dt.Rows)

{

sw.WriteLine(dr["ID"]+","+dr["vName"]+","+dr["iAge"]);

}

sw.Close();

Response.AddHeader("Content-Disposition","attachment;

filename=test.csv");

Response.ContentType="application/ms-excel";

Response.ContentEncoding="GB2312");

Response.Write(sw);

Response.End();

对方法一,二补充一点,如果你希望导出的是xls文件分隔符用\t就可以了,不要用逗号

代码修改如下:

sw.WriteLine("自动编号\t姓名\t年龄");

foreach(DataRow dr in dt.Rows)

{

sw.WriteLine(dr["ID"]+"\t"+dr["vName"]+"\t"+dr["iAge"]);

}

另外,修改输出的文件扩展名为xls即可。

方法三:从datagrid导出html代码,生成excel文件,给客户端下载优点:

1、有固定的格式,样子好看(datagrid的样子)

局限性:

1、不适合数据交换,里面有html代码,比较乱,没有固定格式

2、datagrid不能有分页、排序等,否则出错

实现方法:

Response.Clear();

Response.Buffer=false;

Response.Charset="GB2312";

Response.AppendHeader("Content-Disposition","attachment;filename=test.xls");

Response.ContentEncoding="GB2312");

Response.ContentType="application/ms-excel";

this.EnableViewState=false;

oStringWriter=new ;

oHtmlTextWriter=new ;

Response.Write(oStringWriter.ToString());

Response.End();

在这里说明一点:有的网友反映代码出现"没有dr["id"]"之类的错误,这个代码是按照我的数据结构来写的,到时候相关的字段要换成你自己的才是。

还有就是如果文件名需要中文的话,这么修改

Response.AddHeader("Content-Disposition","attachment;filename="+"中文",".xls");

目录

一、环境配置

二、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不显示警告

2、新建Excel文件

set objExcelBook=objExcelApp.ActiveWorkBook set objExcelSheets=objExcelBook.Worksheets set

objExcelSheet=objExcelBook.Sheets(1)

3、读取已有Excel文件

strAddr=Server.MapPath(".")

"\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图

2、设定Chart图种类

注:二维折线图,4;二维饼图,5;二维柱形图,51 3、设定Chart图标题

"A test Chart"

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

objExcelSheet.Range("A1:k5"),1 5、直接设定图形数据(推荐)

"=""333"""

"={1,4,5,6,2}"

6、绑定Chart图

1

7、显示数据表

8、显示图例

五、服务器端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",保证每次程序执行完不留下死进程。

asp操作excel方法

asp操作excel方法 代码如下: <% ‘************************************************* ****************** ‘使用说明 ‘dim a ‘set a=new createexcel ‘a.savepath=x ‘保存路径 ‘a.sheetname=工作簿名称‘多个工作表a.sheetname=array(工作簿名称一,工作簿名称二) ‘a.sheettitle=表名称‘可以为空多个工作表a.sheetname=array(表名称一,表名称二) ‘a.data =d ‘二维数组‘多个工作表 array(b,c) b 与c为二维数组 ‘dim rs ‘set rs=server.createobject(adodb.recordset) ‘rs.open select id, classid, classname from [class] ,conn, 1, 1 ‘a.adddbdata rs, 字段名一,字段名二, 工作簿名称, 表名称, true ‘true自动获取表字段名

‘a.adddata c, true , 工作簿名称, 表名称‘c二维数组 true 第一行是否为标题行 ‘a.addtdata e, sheet1 ‘按模板生成c=array(array(aa1, 内容), array(aa2, 内容2)) ‘a.create() ‘https://www.360docs.net/doc/7e10773456.html,edtime 生成时间,毫秒数 ‘a.savepath 保存路径 ‘set a=nothing ‘设置com组件的操作权限。在命令行键入“dcomcnfg”,则进入com组件配置界面,选择microsoftexcel后点击属性按钮,将三个单选项一律选择自定义,编辑中将everyone 加入所有权限 ‘************************************************* ****************** class createexcel private createtype_ private savepath_ private readpath_ private authorstr rem 设置作者 private versionstr rem 设置版本 private systemstr rem 设置系统名称

asp数据库成excel文件代码

asp数据库数据生成excel文件: 生成EXCEL文件实例 在线生成EXCEL


<% if Request("act") = "" then Response.Write "生成EXCEL文件实例" else dim conn,strconn strconn="driver={SQL Server};server=wen;uid=sa;pwd=;database=DB_Test" set conn=server.CreateObject("adodb.connection") conn.Open strconn dim rs,sql,filename,fs,myfile,x Set fs = server.CreateObject("scripting.filesystemobject") '--假设你想让生成的EXCEL文件做如下的存放 filename = Server.MapPath("online.xls") '--如果原来的EXCEL文件存在的话就删除 if fs.FileExists(filename) then fs.DeleteFile(filename) end if '--创建EXCEL文件 set myfile = fs.CreateTextFile(filename,true) Set rs = Server.CreateObject("ADODB.Recordset") '--从数据库中把你想放到EXCEL中的数据读出来 sql = "select * from Tb_Execl order by id desc" rs.Open sql,conn,1,1 if rs.EOF and rs.BOF then else dim strLine,responsestr strLine="" For each x in rs.fields strLine = strLine & https://www.360docs.net/doc/7e10773456.html, & chr(9) Next '--将表的列名先写入EXCEL myfile.writeline strLine Do while Not rs.EOF strLine=""

如何用asp读取Excel文件(比较全面)

1.ASP对Excel的基本操作 (1) 建立Excel对象 创建Excel对象可以通过下面的代码来实现: <% set objExcelApp = CreateObject("Excel.Application") objExcelApp.DisplayAlerts = false '不显示警告objExcelApp.Application = false '不显示界面 %> (2) 新建Excel文件 新建Excel文件可以通过以下代码来实现: <% objExcelApp.WorkBooks.add set objExcelBook = objExcelApp.ActiveWorkBook set objExcelSheets = objExcelBook.Worksheets set objExcelSheet = objExcelBook.Sheets(1) %> (3) 读取已有的Excel文件 读取已有的Excel文件可以通过下面的代码来实现 <% strAddr = Server.MapPath(".") objExcelApp.WorkBooks.Open(strAddr & "TempletTable.xls") set objExcelBook = objExcelApp.ActiveWorkBook set objExcelSheets = objExcelBook.Worksheets set objExcelSheet = objExcelBook.WorkSheets(1) %> (4) 另存Excel文件 另存Excel文件可以通过以下代码来实现 <% objExcelBook.SaveAs strAddr & "templateTables.xls" %> (5) 保存Excel文件 保存Excel文件可以通过以下代码来实现: <% objExcelBook.Save %> (6) 退出Excel操作 <%

asp写入excel

<%@ LANGUAGE="VBSCRIPT" %> <%option explicit%> 生成EXCEL文件 生成EXCEL文件


<% if Request("act") = "" then Response.Write "生成EXCEL文件" else dim conn,strconn strconn="driver={SQL Server};server=xxx;uid=sa;pwd=;database=DB_Test" set conn=server.CreateObject("adodb.connection") conn.Open strconn dim rs,sql,filename,fs,myfile,x Set fs = server.CreateObject("scripting.filesystemobject") '--假设你想让生成的EXCEL文件做如下的存放 filename = Server.MapPath("online.xls") '--如果原来的EXCEL文件存在的话删除它 if fs.FileExists(filename) then fs.DeleteFile(filename) end if '--创建EXCEL文件 set myfile = fs.CreateTextFile(filename,true) Set rs = Server.CreateObject("ADODB.Recordset") '--从数据库中把你想放到EXCEL中的数据查出来 sql = "select * from Tb_Execl order by sort desc" rs.Open sql,conn if rs.EOF and rs.BOF then Response.Write "库里暂时没有数据!"

ASP生成Excel文件方法

ASP生成Excel文件方法 方法一:导出到csv文件,存放在服务器端任一路径,然后给客户下载优点: 1、可以进行身份认证后给客户下载,如果放到非web目录就没有对应的url,客户无法随时下载。 2、也是因为生成了文件,所以占用了服务器的空间,但是可以把文件名存放到数据库,再次给客户下载的时候不需要重复生成文件。 3、csv文件是文本文件,逗号隔开字段,回车隔开行,易于数据导入导出。 实现方法: SqlConnection conn=new SqlConnection("conn"]); SqlDataAdapter da=new SqlDataAdapter("select*from tb1",conn); DataSet ds=new DataSet(); da.Fill(ds,"table1"); DataTable dt=ds.Tables["table1"]; string name="downloadurl"].ToString()+"yyyyMMdd")+new Random(".csv";//存放到web.config中downloadurl指定的路径,文件格式为当前日期+4位随机数 FileStream fs=new FileStream(name,FileMode.Create,FileAccess.Write); StreamWriter sw=new StreamWriter(fs,"gb2312")); sw.WriteLine("自动编号,姓名,年龄"); foreach(DataRow dr in dt.Rows) { sw.WriteLine(dr["ID"]+","+dr["vName"]+","+dr["iAge"]); } sw.Close();

ASP用模板生成Excel、Word

用模板生成Excel、Word最大优点: Word、Excel文档样式易于控制和调整,以往用Excel.Application来生成Excel、Word,需要写很多代码来控制排版的样式,用模版几乎不受任何限制,只需要打开word或Excel,编辑文档,选择"文件->另存为web页",即可方便的做好模板,用office生成的模板要比直接在DW中做好模板更加符合office偏好,生成后文件样式可与原word、Excel格式99%一样,因此建议大家用office(office97~office2003)直接来生成模板框架。 主要的代码 function.asp 复制内容到剪贴板代码: <% ''开启容错机制 on error resume next '功能,检测服务器是否支持指定组件 Function object_install(strclassstring) on error resume next object_install=false dim xtestobj set xtestobj=server.createobject(strclassstring) if -2147221005 <> Err then object_install=true set xtestobj=nothing end function if object_install("Scripting.FileSystemobject")=false then Response.Write "

对不起,您的空间不支持FSO组件,请与管理员联系!
" Response.End end if if object_install("adodb.stream")=false then Response.Write "
对不起,您的空间不支持adodb.stream功能,请与管理员联系!
" Response.End end if '----------------------------------------------------------------------------- '函数名称:ReadTextFile '作用:利用AdoDb.Stream对象来读取文本文件 '参数:FileUrl文件相对路径,FileCharSet:文件编码 Function ReadFromTextFile (FileUrl,FileCharSet)'函数 dim str set stm=server.CreateObject("adodb.stream") stm.Type=2 '指定或返回的数据类型, stm.mode=3 '指定打开模式,现在为可以读写模式,类似于word的只读或锁定功能

在ASP中怎么把页面中的数据导出到EXCEL

使用asp怎样将数据导出到excel文件 Web 注意:两个函数中的“data“是网页中要导出的table的 id 导出到Excel代码 导出到Word代码