返回列表 回复 发帖

导出为CSV格式的ASP处理页面代码

参数
strSQL     要导出的SQL查询语句
strFields  字段名称列表,如果为空字符,则使用SQL语句中的字段名

用法示例:
1:export.asp?strSQL=select * from table1
2:export.asp?strSQL=select ID,NAME,AGE FROM EMPLOYEES&strFields =编号,姓名,年龄


export.asp
<%
Response.Buffer = true
Response.AddHeader  "Content-Disposition","attachment;filename=exportdata.csv;"      
Response.CharSet  =  "bg2312"   
Response.ContentType  =  "application/octet-stream"

Dim DBName,Conn
DBName="DATA/EPM.mdb"    '定义数据库路径及名称
SET Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(DBName)

DIM strSQL,strFields
DIM RST
DIM I

strSQL=REQUEST("strSQL")
strSQL=replace(strSQL,"%","%")   '解决%号丢失问题,    参数中把%变成全角的,不然全丢失
strSQL=replace(strSQL,"#","#")   '解决#号丢失问题
strFields=REQUEST("strFields")

'Response.Write(strSQL &VBCRLF)

SET RST = CONN.EXECUTE(strSQL)

IF RST.EOF THEN
 Response.Write("没有可导出数据!")
 response.end
END IF

IF LEN(strFields)>0 THEN
 Response.Write replace(strFields,"ID","id")  '防止出现SYLK文件打开提示
ELSE
 FOR I =0 TO RST.FIELDS.COUNT-1
     'strFields=strFields &RST.FIELDS(I).NAME & ","
  '防止出现SYLK文件打开提示
  '以ID(大写)内容开头的文件
     strFields=strFields & replace(RST.FIELDS(I).NAME,"ID","id") & ","
 NEXT
 strFields=LEFT(strFields,LEN(strFields)-1)
 Response.Write(strFields)
END IF

Response.Write(vbcrlf)

Response.Write(RST.GetString(,,","))

%>

 

返回列表