代码也返回页面的XML和html

时间:2015-06-03 13:33:26

标签: asp.net xml excel streamwriter

在asp.net页面上,我调用以下函数将一些数据输出为XML,以便作为电子表格下载。

public static void ToExcelStream(DataSet dsInput, string filename, string ProductName)

{
    string excelXml = GetExcelXml(dsInput, filename, ProductName);

    HttpContext.Current.Response.Clear();
    HttpContext.Current.Response.ClearContent();
    HttpContext.Current.Response.ClearHeaders();
    HttpContext.Current.Response.Buffer = true;
    HttpContext.Current.Response.Charset = "utf-8";
    HttpContext.Current.Response.AddHeader("Content-disposition", "attachment; filename=" + filename);
    HttpContext.Current.Response.AppendHeader("Content-Type", "application/vnd.ms-excel");


    StreamWriter sw = new StreamWriter(HttpContext.Current.Server.MapPath(filename));
    sw.Write(excelXml);
    sw.Close();
    sw.Dispose();
    HttpContext.Current.Response.TransmitFile(filename);
}

excelXml包含要用作电子表格基础的XML。 GetExcelXml函数返回的XML正确形成。如果您破坏了代码,请将XML保存为.xls文件 - 它在Excel中完全打开。

但是,我的问题是上面的代码生成了一个包含XML的文件,在XML之后,包含了调用页面的所有html。为什么在GetExcelXml函数返回XML之后添加调用页面的html?

下载的文件开始......

<?xml version="1.0"?>

xml以......结尾。

</Worksheet>\r\n</Workbook>

但是,之后,就是......

<!DOCTYPE html PUBLIC "-//WCD//DTD XHTML 1.1//EN"
<html>
<head>
all the script references for the page, title etc. are in here
</head>
<body>
all the html for the body appears here
</body>
</html>

为什么页面的html会附加到XML?

1 个答案:

答案 0 :(得分:0)

我相信你需要改变:

HttpContext.Current.Response.TransmitFile(filename);

为:

HttpContext.Current.Response.TransmitFile(HttpContext.Current.Server.MapPath(filename));