사용자가 데이터베이스에서 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에 보고서를 쓰고, 오랫동안 탁월하다. –