asp.net - 如何在客户端 PC ASP.net 上将数据表另存为 CSV 文件

标签 asp.net csv client-side

如何将数据集作为 CSV 文件保存到客户端电脑?

我可以将文件从服务器保存到客户端电脑,并且可以将数据表转换为 CSV 文件,但我似乎不知道如何将两者放在一起。

将文件从服务器保存到客户端(作为附件)

String FileName = "my file name";
String FilePath = @"C:\testfile.txt";
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.ClearContent();
response.Clear();
response.ContentType = "text/plain";
response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + ";");

response.TransmitFile(FilePath + FileName); //Can only put the file path in here, cant put the datatable or convertion in there.. 
response.Flush();
response.End();

将数据表转换为 CSV 文件(因为我有一个数据表,应将其作为 CSV 文件保存到客户端电脑)

StringBuilder sb = new StringBuilder(); 

string[] columnNames = dt.Columns.Cast<DataColumn>().
                                  Select(column => column.ColumnName).
                                  ToArray();
sb.AppendLine(string.Join(",", columnNames));

foreach (DataRow row in dt.Rows)
{
    string[] fields = row.ItemArray.Select(field => field.ToString()).
                                    ToArray();
    sb.AppendLine(string.Join(",", fields));
}

File.WriteAllText("test.csv", sb.ToString());

最佳答案

您使用 response.Write(sb.ToString()); 而不是 response.TransmitFile 来渲染您的 CSV 生成数据的输出。例如:

response.ClearContent();
response.Clear();
response.ContentType = "text/plain";
response.AddHeader("Content-Disposition", "attachment; filename=DownloadedData.txt;");

StringBuilder sb = new StringBuilder(); 

string[] columnNames = dt.Columns.Cast<DataColumn>().
                                  Select(column => column.ColumnName).
                                  ToArray();
sb.AppendLine(string.Join(",", columnNames));

foreach (DataRow row in dt.Rows)
{
    string[] fields = row.ItemArray.Select(field => field.ToString()).
                                    ToArray();
    sb.AppendLine(string.Join(",", fields));
}

// the most easy way as you have type it
response.Write(sb.ToString());


response.Flush();
response.End();

最好使用处理程序,而不是从页面执行此操作。

关于asp.net - 如何在客户端 PC ASP.net 上将数据表另存为 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16582993/

相关文章:

asp.net - MultipartStreamProvider 在异步工作后丢失 HttpContext

python - 如何按从高到低对字母数字列表进行排序(Python)

java - 如何通过电子邮件发送保存的 CSV 文件或在 Android 中使用 Google Drive 上传?

perl - 使用 awk 或 perl 从 CSV 中提取特定列(解析)

javascript - 使用 Jquery 确定语言切换

c# - 使用 MSAL 身份验证 token 使用 Web API 2

c# - 执行标量();用 scope_identity() 生成 "System.InvalidCastException: Specified cast is not valid"

asp.net - Javascript结果生成Jquery CRUD ajax操作

javascript - 检测handlebars.js 解析/语法错误。 (客户端模板)

ios - 用于连接 iOS 中的 Red5 服务器的免费客户端库