在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?
答案 0 :(得分:0)
我相信你需要改变:
HttpContext.Current.Response.TransmitFile(filename);
为:
HttpContext.Current.Response.TransmitFile(HttpContext.Current.Server.MapPath(filename));