求一段生成csv的代码 csv文件就是一个普通的文本文件,只不过是用逗号来分隔字段,所以生成文件部分利用File类和几个Stream就可以了,网上这部分代码很多 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 easy就给个代码吧能找到还用上这里问吗楼上净说没用的 out.println("a,b,c");out.println("d,e,f");... 你的CSV文件准备存到服务器端还是客户端呀? 一帮小屁孩,连 CSV 文件格式 的规范都没有读过就瞎说CSV格式远比你们想象的要复杂! 你可以参考下面的代码。doCreateFile方法是将后台查询得到的数据写到CSV文件中。不过需要设置IE中的安全设置,将其中的ActiveX控件设为可用。<script language="javascript">function ReadWriteFile(strFileFolder,strFile){//判断并创建文件夹 var fso var RetVal fso = new ActiveXObject("Scripting.FileSystemObject"); var strTmp = "" strTmp = strFileFolder.substring(0,4); for (i=4;i<strFileFolder.length;i++) { if (strFileFolder.charAt(i) == "\\") { if(fso.FolderExists(strTmp)==false) {//文件夹不存在创建文件夹 fso.CreateFolder(strTmp) } strTmp = strTmp + '\\\\' } else { strTmp = strTmp + strFileFolder.charAt(i) } } strFileFolder = strTmp if(fso.FolderExists(strFileFolder)==false) {//文件夹不存在创建文件夹 fso.CreateFolder(strFileFolder) } if(fso.FileExists(strFile)==false) {//文件不存在创建文件 //fso.CreateTextFile(strFile) //alert("") //var tf = fso.OpenTextFile(strFile,2,true,0) //tf.WriteLine("00000000") } return true}function RepSC(str,str1,str2) { var strTmp = ""; var startPosition = 0; for (var i=0;i<str.length;i++) { if (str.charAt(i) == str1) { strTmp = strTmp + str2; } else { strTmp = strTmp + str.charAt(i); } } return strTmp;}function doCreateFile(){ //获得文件夹 var fileFolder = document.forms[0].fileName.value; if(null == fileFolder || trim(fileFolder)==""){ alert('<bean:message key="asrDownCheckAll.alert.str1"/>'); return; } //--98不支持 \\做为目录结构 //fileFolder = RepSC(fileFolder,"\\","\\\\"); fileFolder = RepSC(fileFolder,"/","\\"); //end <% HashMap hm = (HashMap)request.getAttribute("CHECK_INFO"); Vector depot_id = (Vector)request.getAttribute("DEPOTID"); if(null != depot_id && !depot_id.isEmpty() && null != hm && !hm.isEmpty()){ String date = (String)hm.get("DATE"); %> <% for(int i=0;i<depot_id.size();i++) { Vector vt = (Vector)hm.get((String)depot_id.get(i)); String str = ""; %> var fileName = '<%=(String)depot_id.get(i)%>' + '<%=date%>' + ".csv"; ReadWriteFile(fileFolder,fileName); var fso = new ActiveXObject("Scripting.FileSystemObject"); var zzz = fileFolder + '\\' +fileName; var tf = fso.OpenTextFile(zzz,2,true,0); var astr = null; <% for(int j=0;j<vt.size();j++) { str = (String)vt.get(j); %> astr = '<%=str%>'; tf.WriteLine(astr); <% } %> tf.close(); <% } } %> alert('<bean:message key="asrDownCheckAll.alert.str2"/>'); return;}//去掉空格"开始"function ltrim(s){ var len = s.length; if (len < 1) return ""; var i = 0; while ( i < len && __isBlankChar(s.charAt(i++)) ) ; //什么也不做 return s.substring(--i, len);}function rtrim(s){ var len = s.length; if (len < 1) return ""; var i = len; while ( i > -1 && __isBlankChar(s.charAt(--i)) ) ; //什么也不做 return s.substring(0, ++i);}function trim(s){ var s1 = ltrim(s); return (rtrim(s1));}function __isBlankChar(ch){ //去掉了'\v';20020522 chenmq return (ch == ' ' || ch == '\f' || ch == '\n' || ch == '\r' || ch=='\t');}//去掉空格"结束"</script> 这个问题可以分两部分讨论:1、csv文件的格式2、通过jsp向客户端输出csv文件第一个问题我们就按简单的来讨论,可以认为是每个字段用""包含后再用,号分割比如:"a","b","c""d","e","f"现在我们有了csv文件的内容,我们看看怎么把它输出到客户端一种变通的方法是把csv的内容写到一个临时文件中,然后让客户端下载这个临时文件。不过最简单的方法是直接向客户端输出:以下是csv.jsp的内容"a","b","c""d","e","f"就这么简单,这些信息就输出到客户端了。不过现在的情况估计是不会满足楼主需要的,因为浏览器自己处理了这些信息,而不是交给excel来处理。为了让浏览器把处理权让处理,我们需要在jsp的头部加上一些信息,告诉浏览器这些信息不用你来操心,交给其他合适的程序(对应csv来说当然是excel咯)来处理就好了。先告诉它“以下信息是m$的,不是html的”:<%@ page language="java" contentType="application/ms-excel"%>再告诉它文件名是test.csv<%response.setHeader("Content-Disposition","filename=test.xls");%>最后是文件的内容:"a","b","c""d","e","f"全文就是这个样子<%@ page language="java" contentType="application/ms-excel"%><%response.setHeader("Content-Disposition","filename=test.xls");%>"a","b","c""d","e","f"楼主把abcd什么的换成你从javaBean中查到的东西就可以了。再访问这个网页,ie的话会提示你打开或者保存,应该是楼主想要的结果了吧。 关于月份转换成周的问题 DWR选择推送问题 急! HTTP Status 500 - 错误 JavaMail邮件附件问题 如何禁止代理服务器对页面的缓存? 在jsp頁面中讀取Properties文件的問題,急,在線等 如何得到一个实例的类名? 查询后的数据库操作问题,找不出什么错误,还望各位帮忙一下! session问题 为什么项目部署在linux 下面登陆后404呢? 连接池中途与数据库服务器断开,如何检测? 请高手帮助解决一下,这是什么问题?
就给个代码吧
能找到还用上这里问吗
楼上净说没用的
out.println("d,e,f");
...
{//判断并创建文件夹
var fso
var RetVal
fso = new ActiveXObject("Scripting.FileSystemObject");
var strTmp = ""
strTmp = strFileFolder.substring(0,4);
for (i=4;i<strFileFolder.length;i++) {
if (strFileFolder.charAt(i) == "\\") {
if(fso.FolderExists(strTmp)==false)
{//文件夹不存在创建文件夹
fso.CreateFolder(strTmp)
}
strTmp = strTmp + '\\\\'
} else {
strTmp = strTmp + strFileFolder.charAt(i)
}
}
strFileFolder = strTmp if(fso.FolderExists(strFileFolder)==false)
{//文件夹不存在创建文件夹
fso.CreateFolder(strFileFolder)
}
if(fso.FileExists(strFile)==false)
{//文件不存在创建文件
//fso.CreateTextFile(strFile)
//alert("")
//var tf = fso.OpenTextFile(strFile,2,true,0)
//tf.WriteLine("00000000")
}
return true
}
function RepSC(str,str1,str2) {
var strTmp = "";
var startPosition = 0;
for (var i=0;i<str.length;i++) {
if (str.charAt(i) == str1) {
strTmp = strTmp + str2;
} else {
strTmp = strTmp + str.charAt(i);
}
}
return strTmp;
}function doCreateFile(){
//获得文件夹
var fileFolder = document.forms[0].fileName.value;
if(null == fileFolder || trim(fileFolder)==""){
alert('<bean:message key="asrDownCheckAll.alert.str1"/>');
return;
}
//--98不支持 \\做为目录结构
//fileFolder = RepSC(fileFolder,"\\","\\\\");
fileFolder = RepSC(fileFolder,"/","\\");
//end
<%
HashMap hm = (HashMap)request.getAttribute("CHECK_INFO");
Vector depot_id = (Vector)request.getAttribute("DEPOTID");
if(null != depot_id && !depot_id.isEmpty() && null != hm && !hm.isEmpty()){
String date = (String)hm.get("DATE");
%>
<%
for(int i=0;i<depot_id.size();i++)
{
Vector vt = (Vector)hm.get((String)depot_id.get(i));
String str = "";
%>
var fileName = '<%=(String)depot_id.get(i)%>' + '<%=date%>' + ".csv"; ReadWriteFile(fileFolder,fileName);
var fso = new ActiveXObject("Scripting.FileSystemObject");
var zzz = fileFolder + '\\' +fileName;
var tf = fso.OpenTextFile(zzz,2,true,0);
var astr = null;
<%
for(int j=0;j<vt.size();j++)
{
str = (String)vt.get(j); %>
astr = '<%=str%>';
tf.WriteLine(astr);
<% }
%>
tf.close();
<%
}
}
%>
alert('<bean:message key="asrDownCheckAll.alert.str2"/>');
return;}
//去掉空格"开始"
function ltrim(s)
{
var len = s.length;
if (len < 1)
return "";
var i = 0;
while ( i < len && __isBlankChar(s.charAt(i++)) )
; //什么也不做
return s.substring(--i, len);
}function rtrim(s)
{
var len = s.length;
if (len < 1)
return "";
var i = len;
while ( i > -1 && __isBlankChar(s.charAt(--i)) )
; //什么也不做
return s.substring(0, ++i);}function trim(s)
{
var s1 = ltrim(s);
return (rtrim(s1));
}function __isBlankChar(ch)
{
//去掉了'\v';20020522 chenmq
return (ch == ' ' || ch == '\f' || ch == '\n' || ch == '\r' || ch=='\t');
}
//去掉空格"结束"</script>
2、通过jsp向客户端输出csv文件第一个问题我们就按简单的来讨论,可以认为是每个字段用""包含后再用,号分割
比如:
"a","b","c"
"d","e","f"
现在我们有了csv文件的内容,我们看看怎么把它输出到客户端一种变通的方法是把csv的内容写到一个临时文件中,然后让客户端下载这个临时文件。不过最简单的方法是直接向客户端输出:以下是csv.jsp的内容
"a","b","c"
"d","e","f"就这么简单,这些信息就输出到客户端了。不过现在的情况估计是不会满足楼主需要的,因为浏览器自己处理了这些信息,而不是交给excel来处理。
为了让浏览器把处理权让处理,我们需要在jsp的头部加上一些信息,告诉浏览器这些信息不用你来操心,交给其他合适的程序(对应csv来说当然是excel咯)来处理就好了。
先告诉它“以下信息是m$的,不是html的”:
<%@ page language="java" contentType="application/ms-excel"%>
再告诉它文件名是test.csv
<%response.setHeader("Content-Disposition","filename=test.xls");%>
最后是文件的内容:
"a","b","c"
"d","e","f"全文就是这个样子
<%@ page language="java" contentType="application/ms-excel"%>
<%response.setHeader("Content-Disposition","filename=test.xls");%>
"a","b","c"
"d","e","f"楼主把abcd什么的换成你从javaBean中查到的东西就可以了。再访问这个网页,ie的话会提示你打开或者保存,应该是楼主想要的结果了吧。