导出为CSV格式的ASP处理页面代码
<P>[quote]</P><P>参数<BR>strSQL 要导出的SQL查询语句<BR>strFields 字段名称列表,如果为空字符,则使用SQL语句中的字段名</P>
<P>用法示例:<BR>1:export.asp?strSQL=select * from table1<BR>2:export.asp?strSQL=select ID,NAME,AGE FROM EMPLOYEES&strFields =编号,姓名,年龄</P>
<P><BR>export.asp<BR><% <BR>Response.Buffer = true<BR>Response.AddHeader "Content-Disposition","attachment;filename=exportdata.csv;" <BR>Response.CharSet = "bg2312" <BR>Response.ContentType = "application/octet-stream" </P>
<P>Dim DBName,Conn<BR>DBName="DATA/EPM.mdb" '定义数据库路径及名称<BR>SET Conn = Server.CreateObject("ADODB.Connection")<BR>Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(DBName)</P>
<P>DIM strSQL,strFields<BR>DIM RST<BR>DIM I</P>
<P>strSQL=REQUEST("strSQL")<BR>strSQL=replace(strSQL,"%","%") '解决%号丢失问题, 参数中把%变成全角的,不然全丢失<BR>strSQL=replace(strSQL,"#","#") '解决#号丢失问题<BR>strFields=REQUEST("strFields")</P>
<P>'Response.Write(strSQL &VBCRLF)</P>
<P>SET RST = CONN.EXECUTE(strSQL)</P>
<P>IF RST.EOF THEN <BR> Response.Write("没有可导出数据!")<BR> response.end<BR>END IF </P>
<P>IF LEN(strFields)>0 THEN<BR> Response.Write replace(strFields,"ID","id") '防止出现SYLK文件打开提示<BR>ELSE<BR> FOR I =0 TO RST.FIELDS.COUNT-1<BR> 'strFields=strFields &RST.FIELDS(I).NAME & ","<BR> '防止出现SYLK文件打开提示<BR> '以ID(大写)内容开头的文件<BR> strFields=strFields & replace(RST.FIELDS(I).NAME,"ID","id") & "," <BR> NEXT <BR> strFields=LEFT(strFields,LEN(strFields)-1)<BR> Response.Write(strFields)<BR>END IF</P>
<P>Response.Write(vbcrlf)</P>
<P>Response.Write(RST.GetString(,,","))</P>
<P>%></P>
<P> </P>
<P>[/quote]</P>
页:
[1]