zoukankan      html  css  js  c++  java
  • 巧用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

  • 相关阅读:
    [Unity3D]脚本中Start()和Awake()的区别
    win7中资源管理器不能显示图片预览的解决方法
    Unity Built-in Shader详解三
    Unity Built-in Shader详解二
    php扩展安装
    ImportError: No module named mysql 报错python引用mysql报错
    运维制度
    ps aux|awk -F'[ ]+' '$3>90{print $2}'|xargs -n1 kill -9
    运维面试必知十五大原理知识点
    resize2fs
  • 原文地址:https://www.cnblogs.com/apiter/p/1954089.html
Copyright © 2011-2022 走看看