使用c#将数据表导出到所需位置(文件夹)的CSV格式

本文关键字:文件夹 位置 格式 CSV 数据表 使用 | 更新日期: 2023-09-27 17:52:41

我被分配了一项任务,将数据导出到csv文件中。除了目标文件夹之外,一切正常。每次将csv文件保存在windows下载(C:'Users'xxxpurt' downloads)文件夹中。我想使用一个所需的位置来保存csv文件,通过指定我可以从SaveFileDialog获得它的位置。这可能吗?如果是,那么我如何指定从saveFiledialog检索到响应的路径?助教

string location = string.Empty;
SaveFileDialog saveCSVDialog = new SaveFileDialog();
saveCSVDialog.InitializeLifetimeService();
saveCSVDialog.Filter = "csv files (*.csv)|*.csv|All files (*.*)|*.*";
saveCSVDialog.FilterIndex = 1;
saveCSVDialog.DefaultExt = ".csv";
saveCSVDialog.RestoreDirectory = true;
DialogResult res = STAShowDialog(saveCSVDialog); //STAShowDialog uses threading
if (res == DialogResult.OK)
{
   location = saveCSVDialog.FileName;
}
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", string.Format("attachment;filename={0}",        Server.HtmlEncode(location)));
Response.Charset = "";
Response.ContentType = "application/text";
.........Fetch columns and rows using loops.........
Response.Output.Write(sb.ToString());
Response.Flush();
Response.End();

使用c#将数据表导出到所需位置(文件夹)的CSV格式

如注释中所述,您无法在服务器上决定将文件存储在客户端的位置。你也不应该在你的服务器代码中创建UI元素。

如果你想在客户端强制一个保存文件对话框,你可以这样做:

Response.AppendHeader("content-disposition", "attachment; filename=somefile.csv");
Response.ContentType = "text/csv";

然而,最终还是由客户端浏览器来决定如何处理它,大多数会显示一个保存文件对话框。

put

 SaveFileDialog saveCSVDialog = new SaveFileDialog();

作为类属性和

saveCSVDialog.InitializeLifetimeService();
saveCSVDialog.Filter = "csv files (*.csv)|*.csv|All files (*.*)|*.*";
saveCSVDialog.FilterIndex = 1;
saveCSVDialog.DefaultExt = ".csv";
saveCSVDialog.RestoreDirectory = true;
类构造函数 中的

因为如果你把它们放在一个方法中,每次你调用那个方法你都会得到新的SaveFileDialog

实例