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