巧用asp导出csv格式excel报表

CSV格式文件简介
  CSV是逗号分隔值文件(Comma Separated value),是一种用来存储数据的纯文本文件格式,通常用于电子表格或数据库软件。所谓“CSV”,是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件。

规则
    开头是不留空,以行为单位。
    可含或不含列名,含列名则居文件第一行。
    一行数据不垮行,无空行。
    以半角符号,作分隔符,列为空也要表达其存在。
    列内容如存在半角逗号(即,)则用两个半角引号(即"")将该字段值包含起来。
    列内容如存在半角引号(即")则应替换成两个半角双引号("")转义。
     文件读写时引号,逗号操作规则互逆。
     内码格式不限,可为ASCII、Unicode或者其他。

  CSV文件多用于储存数据,EXCEL文件可以方便地另存为CSV文件。

  如果你的机器上装了Microsoft Excel的话,.csv文件默认是被Excel打开的。需要注意的是,当你 双击一个.CSV文件,Excel打开它以后即使不做任何的修改,在关闭的时候Excel往往会提示是否要 改成正确的文件格式,这个时候千万记得要选择“否”。因为Excel认为.CSV 文件中的数字是要用 科学记数法来表示的,而我们要的.CSV文件中的数字是普通的。如果你选择了“是”的话,Excel会把CSV文件中所有的数字用科学计数来表示(2.54932E+5这种形式),这个文件就没法用了。 所 以如果你的CSV文件绝大部分都是用在集图上的话,建议把.CSV的默认打开方式改成任意一个文本 编辑器,系统自带的记事本就是个不错的选择。

  好了,说了那么多,大家可能会问,CSV文件那么好用,到底要怎么用呢?不会要自己手工来检测吧?呵呵,还记得上文中一再出现的“软件”这个字眼吗?有专用的软件可以帮助我们完成这项工作。常用的软件有The!Checker和The Hunter。目前这两个软件都有汉化的简体中文版,汉化人是来自北方的snowtank


下面介绍一段asp生成csv格式文件的代码,举例说明gb2312编码的。
将下面这段另存为csv.asp并放到根目录,打开即可下载该csv文件

复制内容到剪贴板 程序代码

  <title>生成报表</title>  
  <%  
  session.codepage="936"
Response.CodePage = "936"
Response.CharSet = "gb2312"
  dim  remotefile
   remotefile=year(now)&month(now)&day(now)

  dim   rs,sql,filename,fs,myfile,x  
  Set   fs   =   server.CreateObject("scripting.filesystemobject")  
  filepath=Request.ServerVariables("APPL_PHYSICAL_PATH")  
  filename   =   filepath&remotefile&".csv"  
  'D:\hosting\wwwroot\54hb_com\htdocs\
  if   fs.FileExists(filename)   then  
  fs.DeleteFile(filename)  
  end   if  
  set   myfile   =   fs.CreateTextFile(filename,true)  
    dim   strLine,responsestr  
    strLine   =   strLine   &   "分类,单价,数量,小记"&vbnewline
    strLine   =   strLine   &   "圆珠笔,¥1.2,10,=B2*C2"&vbnewline
     strLine   =   strLine   &   "铅笔,¥0.7,10,=B3*C3"&vbnewline  
     strLine   =   strLine   &   "橡皮,¥0.8,10,=B4*C4"&vbnewline     
     strLine   =   strLine   &   "汇总,,,=sum(D2:D4)"&vbnewline  
 
  myfile.writeline   strLine  
  
  response.write   "<font   size=2   color=blue>报表巳生成,<a   href="&remotefile&".csv>请点击这里下载该报表!</a></font><br/>"  &filename
  %> 

如果觉得每次都生成文件太占位置也可以直接下载:

复制内容到剪贴板 程序代码

  <% 
'设置编码
  session.codepage="936"
Response.CodePage = "936"
Response.CharSet = "gb2312"
'设置文件头
Response.contenttype="text/csv"
'定义文件名
Response.AddHeader "Content-Disposition", "attachment;filename="&tablename&".xml"
'定义文件名
  dim  remotefile
   remotefile=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)
Response.AddHeader "Content-Disposition", "attachment;filename="&remotefile&".csv"
'内容
    dim   strLine,responsestr  
    strLine   =   strLine   &   "分类,单价,数量,小记"&vbnewline
    strLine   =   strLine   &   "圆珠笔,¥1.2,10,=B2*C2"&vbnewline
     strLine   =   strLine   &   "铅笔,¥0.7,10,=B3*C3"&vbnewline  
     strLine   =   strLine   &   "橡皮,¥0.8,10,=B4*C4"&vbnewline     
     strLine   =   strLine   &   "汇总,=sum(B2:B4),=sum(C2:C4),=sum(D2:D4)"&vbnewline  
'输出
   response.write strLine
  %>

其他类型文件头
Response.contenttype="text/xml"
    Response.contenttype="text/sql"
    Response.contenttype="text/csv"
    Response.contenttype="application/ms-download"

如果文件名不定义的话,那么下载到的文件名会是csv.asp,而不是csv后缀


而且里面可以加EXCEL中的运算,如果用excel打开就直接运算了。但是如果您的报表中的数字有些前面带0的可能会把0舍去哦
注意:一些特殊字符需要转义,比如
英文半角引号"转义为 ""
英文半角逗号,转义为  ","
&转义为 &
\ 转义为  "
注意替换时注意先后顺序


本文来自: 双木杉子个人网站(54bq.com) 详细出处参考:http://www.54bq.com/boke/article/shmshz/237.htm

原文地址:https://www.cnblogs.com/apiter/p/1954089.html