頁面上有1個按鈕,點擊之后將頁面數據生成csv文件并將生成的文件下載到客戶端。請問這要怎么實現???
我用的是vs2003/c#,最好能給出例子代碼。

解决方案 »

  1.   


        //保存到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) 试试