0

データを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();
4

2 に答える 2

0

コメントに記載されているように、クライアント上のファイルを保存するサーバーを決定することはできません。また、サーバー コードで UI 要素を作成するべきではありません。

クライアントでファイルの保存ダイアログを強制したい場合は、これを試すことができます:

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

ただし、最終的にはクライアント ブラウザがそれをどう処理するかを決定しますが、ほとんどの場合、ファイルの保存ダイアログが表示されます。

于 2013-01-11T10:31:21.253 に答える
-1

置く

 SaveFileDialog saveCSVDialog = new SaveFileDialog();

クラスプロパティとして

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

クラスコンストラクター内

それらを1つのメソッドに入れると、そのメソッドを呼び出すたびに、次の新しいインスタンスが取得されるためです。SaveFileDialog

于 2013-01-11T10:26:17.907 に答える