C# 下载SQL Server表的内容,并将内容放入CSV文件?
我有一个项目,它应该包括一个下载功能,当用户按下下载按钮时,SQL Server表的内容将作为csv文件下载 我有什么办法可以做到这一点吗 名为Characters的表格内容将作为csv文件下载。我所知道的是,我已经使用了查询Select*from Characters,但我不知道如何实现它C# 下载SQL Server表的内容,并将内容放入CSV文件?,c#,asp.net,csv,C#,Asp.net,Csv,我有一个项目,它应该包括一个下载功能,当用户按下下载按钮时,SQL Server表的内容将作为csv文件下载 我有什么办法可以做到这一点吗 名为Characters的表格内容将作为csv文件下载。我所知道的是,我已经使用了查询Select*from Characters,但我不知道如何实现它 protected void btnDownload_Click(object sender, EventArgs e) { string fileName = s
protected void btnDownload_Click(object sender, EventArgs e)
{
string fileName = string.Empty;
string filepath = Request.MapPath("~/Uploads");// this needs to be changed with the SQL query, but I do not know how to implement it
string downloadFileName = "Attendance.zip";
Response.ContentType = "application/zip";
Response.AddHeader("content-disposition", "filename=" + downloadFileName);
using (ZipFile zip = new ZipFile())
{
foreach (GridView row in gvFiles.Rows)
{
CheckBox cb = (CheckBox)row.FindControl("chkSelect");
if (cb != null && cb.Checked)
{
fileName = (row.FindControl("lblFileName") as Label).Text;
zip.AddFile(Server.MapPath(Path.Combine(filepath, fileName)), "");
}
}
zip.Save(Response.OutputStream);
}
我不确定您发布的代码与问题有何关系,但下面介绍如何将表的内容转换为CSV文件。此示例假定您有一个已填充的数据表dtTable:
StringBuilder sb = new StringBuilder();
for (int i = 0; i < dtTable.Columns.Count; i++)
{
sb.Append(dtTable.Columns[i].ColumnName);
sb.Append(",");
}
// Remove the trailing ,
sb.Remove(sb.Length - 1, 1);
sb.Append(Environment.NewLine);
for (int i = 0; i < dtTable.Rows.Count; i++)
{
for (int j = 0; i < dtTable.Columns.Count; j++)
{
sb.Append(dtTable.Rows[i][j].ToString());
sb.Append(",");
}
sb.Remove(sb.Length - 1, 1);
sb.Append(Environment.NewLine);
}
string csvFileString = sb.ToString();
为了资源使用的性能和经济性,我将使用SQL命令和仅向前的SqlDataReader来获取数据 这些文章可能有助于您了解所需内容:
关于你的环境,你没有讲太多。例如: 您使用哪种数据访问技术? 您必须转义csv文件中的字段吗? 对于处理csv文件,我建议使用 如果您可以自由选择数据访问,那么您可能应该查看或只使用普通的SqlCommand/SqlDataReader