ASP生成Excel文件方法

  • 格式:docx
  • 大小:19.94 KB
  • 文档页数:7

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