繁体   English   中英

使用C#将DataTable导出到所需位置(文件夹)上的CSV文件

[英]Exporting DataTable to CSV on desired location (folder) using c#

我被赋予了将数据导出到csv文件中的任务。 除了目标文件夹,其他所有东西都工作正常。 每次它将csv文件保存在Windows下载(C:\\ Users \\ xxxpurt \\ Downloads)文件夹中。 我想使用所需的位置通过指定可以从SaveFileDialog获取的位置来保存csv文件。 这可能吗? 如果是这样,我如何指定从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();

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

如果要在客户端上强制执行保存文件对话框,可以尝试以下操作:

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

但是,最终由客户端浏览器决定如何使用它,大多数浏览器会显示一个保存文件对话框。

 SaveFileDialog saveCSVDialog = new SaveFileDialog();

作为阶级财产和

saveCSVDialog.InitializeLifetimeService();
saveCSVDialog.Filter = "csv files (*.csv)|*.csv|All files (*.*)|*.*";
saveCSVDialog.FilterIndex = 1;
saveCSVDialog.DefaultExt = ".csv";
saveCSVDialog.RestoreDirectory = true;

在类构造函数中

因为如果将它们放在一个方法中,则每次调用该方法时,都会得到SaveFileDialog新实例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM