如何将xlsx文件作为aspx响应输出传输?

时间:2014-09-02 19:43:55

标签: c# asp.net excel-2007 excel-2010 export-to-excel

目标:使用aspx响应输出将.xlsx文件从服务器传输到客户端。

方法尝试: 我对所有这些方法使用了相同的响应头。

  1. Response.TransmitFile(fileName);
  2. Response.Output.Write(System.Text.Encoding.Default.GetString(File.ReadAllBytes(path))); //Tried with different encodings.
  3. Response.Output.Write(File.ReadAllText(path, System.Text.Encoding.Default)); //Tried with different encodings.
  4. 结果: 方法1工作(由于一些基础设施相关的约束,我们不能使用这种方法)。但方法2和3不起作用。它导致客户端损坏的.xlsx文件。 虽然.xlsx是xml文件和二进制格式的集合,但我尝试在服务器和客户端使用notepad ++打开文件。我注意到他们没什么不同。

    问题:

    1. 为什么文件内容在传输到客户端后会发生变化?
    2. 有没有其他方法可以使用aspx响应输出将xlsx文件从服务器发送到客户端?

1 个答案:

答案 0 :(得分:0)

请尝试以下方法:

Response.ContentType = "application/vnd.ms-excel";
Response.AppendHeader("Content-Disposition", "attachment; filename=myfile.xlsx");
Response.BinaryWrite(File.ReadAllBytes(path));