ユーザーがデータベースからCSV形式でデータをダウンロードできるようにするASP.NETページを作成しようとしています。コードの中にある以下のコードを書いて、ボタンをクリックして実行します。ここで私が書いたものです:CSVをResponse.OutputStreamに書き出すと、HTMLも書き出されます
private void RunBackup()
{
Button1.Enabled = false;
Response.ContentType = "text/csv";
Response.AddHeader("content-disposition", "attachment; filename=backup.csv");
try
{
using (SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["TestConnectionString"].ConnectionString))
using (StreamWriter writer = new StreamWriter(Response.OutputStream, Encoding.UTF8))
{
var queryString = "SELECT * FROM [Data] WHERE [ID] = @id";
SqlCommand command = new SqlCommand(queryString, connection);
command.Parameters.Add("@id", SqlDbType.Int).Value = userId;
connection.Open();
SqlDataReader reader = command.ExecuteReader();
// Write header row.
for (int columnCounter = 0; columnCounter < reader.FieldCount; columnCounter++)
{
if(columnCounter > 0)
{
writer.Write(separator);
}
writer.Write(reader.GetName(columnCounter));
}
writer.WriteLine(string.Empty);
// Write out the data.
while (reader.Read())
{
// Write out the column.
for (int columnCounter = 0; columnCounter < reader.FieldCount; columnCounter++)
{
if (columnCounter > 0)
{
writer.Write(separator);
}
writer.Write(reader.GetValue(columnCounter).ToString().Replace(",", ";").Replace("\"", " "));
}
writer.WriteLine(string.Empty);
}
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
}
catch(Exception e)
{
}
finally
{
Button1.Enabled = true;
}
それは私がCSVがSQLデータを含むファイルを取得、私はまた得るかだけではなく、事実を除いて、素晴らしい作品 - ファイルの最後に - ページのHTML。私はそれがResponse
ヘッダーまたはResponse.OutputStream
への出力と関係があると思われますが、何をしているのか分かりません。
私は正しい方向を指していると思います。
正確に何をしたいですか?私はほとんどCSVに報告書を書いていますが、長年にわたって優れています。 –