點擊按鈕生成csv文件并下載到客戶端 頁面上有1個按鈕,點擊之后將頁面數據生成csv文件并將生成的文件下載到客戶端。請問這要怎么實現???我用的是vs2003/c#,最好能給出例子代碼。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //保存到CSV文件 public void SaveCsvFromDS(DataSet src, string fileName) { StreamWriter writer = null; try { if (src == null || src.Tables.Count == 0) throw new Exception("dataset is null or has not table in dataset"); //循环所有table for (int i = 0; i < src.Tables.Count; i++) { //如果存在多个表,则第二个表起名为原名+1 if (i > 0) fileName = fileName.Substring(0, fileName.IndexOf('.')) + i + fileName.Substring(fileName.IndexOf(".")); writer = new StreamWriter(fileName); DataTable dt = src.Tables[i]; StringBuilder sb = new StringBuilder(); //首先把列存入文件,如果存在“,”则在两边加上“号 for (int j = 0; j < dt.Columns.Count; j++) { string colName = dt.Columns[j].ColumnName; if (colName.IndexOf(',') > -1) colName = colName.Insert(0, "\"").Insert(colName.Length + 1, "\""); if(!colName.Equals("")) if (j != dt.Columns.Count - 1) sb.Append(","); } writer.WriteLine(sb.ToString()); sb = new StringBuilder(); string temp = ""; //循环所有行 for (int j = 0; j < dt.Rows.Count; j++) { DataRow dr = dt.Rows[j]; for (int k = 0; k < dt.Columns.Count; k++) { object o = dr[k]; if (o != null) temp = o.ToString(); if (temp.IndexOf(',') > -1) temp = temp.Insert(0, "\"").Insert(temp.Length + 1, "\""); sb.Append(temp); if (k != dt.Columns.Count - 1) sb.Append(","); } writer.WriteLine(sb.ToString()); sb = new StringBuilder(); } writer.Close(); } } catch (Exception ex) { throw new Exception("Save csv error", ex); } finally { if (writer != null) writer.Close(); } }完了 用Response.Redirect(fileName) 试试 添加了ValidateRequest=false 为啥还报有潜在危险 莫名其妙的URL asp.net产品列表带图片怎样布局? “/”应用程序中的服务器错误。 请问主从关系在实体中应该如何设计呢 ? 求救阿,UrlRewrite域名重写的问题 关于treeview右健菜单的问题 模拟鼠标 高分求解,window.showModalDialog回传参数问题。 分不够可加!!!!请大师回复................ 在VS2005中怎么新建一个三层架构? HTML控件绑定问题
//保存到CSV文件
public void SaveCsvFromDS(DataSet src, string fileName)
{
StreamWriter writer = null;
try
{
if (src == null || src.Tables.Count == 0) throw new Exception("dataset is null or has not table in dataset"); //循环所有table
for (int i = 0; i < src.Tables.Count; i++)
{
//如果存在多个表,则第二个表起名为原名+1
if (i > 0)
fileName = fileName.Substring(0, fileName.IndexOf('.')) + i + fileName.Substring(fileName.IndexOf(".")); writer = new StreamWriter(fileName); DataTable dt = src.Tables[i];
StringBuilder sb = new StringBuilder();
//首先把列存入文件,如果存在“,”则在两边加上“号
for (int j = 0; j < dt.Columns.Count; j++)
{
string colName = dt.Columns[j].ColumnName;
if (colName.IndexOf(',') > -1)
colName = colName.Insert(0, "\"").Insert(colName.Length + 1, "\"");
if(!colName.Equals(""))
if (j != dt.Columns.Count - 1)
sb.Append(",");
}
writer.WriteLine(sb.ToString());
sb = new StringBuilder();
string temp = "";
//循环所有行
for (int j = 0; j < dt.Rows.Count; j++)
{
DataRow dr = dt.Rows[j];
for (int k = 0; k < dt.Columns.Count; k++)
{
object o = dr[k];
if (o != null)
temp = o.ToString();
if (temp.IndexOf(',') > -1)
temp = temp.Insert(0, "\"").Insert(temp.Length + 1, "\"");
sb.Append(temp);
if (k != dt.Columns.Count - 1)
sb.Append(",");
}
writer.WriteLine(sb.ToString());
sb = new StringBuilder();
}
writer.Close();
}
}
catch (Exception ex)
{
throw new Exception("Save csv error", ex);
}
finally
{
if (writer != null) writer.Close();
}
}
完了 用Response.Redirect(fileName) 试试