从byte []数组中为ashx创建一个excel文件以供客户端下载

我试图使用DataTableReader从DataTable中读取数据后,从byte []数组创建Excel文件,所有这些都在ashx文件中。 但它不起作用。 在这里我发布一些代码:

DataTableReader RS = dt.CreateDataReader();
byte[] byteArray = GetData(RS);

context.Response.ContentType = "application/ms-excel";
context.Response.Clear();

//  context.Response.Charset = "";
try
{
    context.Response.BinaryWrite(byteArray);
    context.Response.OutputStream.Write(byteArray, 0, byteArray.Length);
    context.Response.BufferOutput = true;
    context.Response.Flush();
 }
 catch (Exception ex)
 {
    SendMail(ex.Message.ToString());
 }

它引发以下异常:

context.Response.SubStatusCode抛出了System.PlatformNotSupportedException类型的异常。 {“这个操作需要IIS集成管道模式。”} ashx

我知道,如果我使用标题需要有IIS7或框架3+。

任何帮助,将不胜感激!!


您设置Response ContentType然后Clear Response 。 然后你写回应两次,这太奇怪了。 我会改变这一点,我也会尝试调用End而不是Flush

最低限度的代码来实现它的工作原理是这样的:

...
    DataTableReader RS = dt.CreateDataReader();             
    byte[] byteArray = GetData(RS);             

    try   
    {
        context.Response.Clear();
        context.Response.ContentType = "application/ms-excel";   
        context.Response.OutputStream.Write(byteArray, 0, byteArray.Length);       
        context.Response.End();    
    }    
    catch (Exception ex)    
    {       
        SendMail(ex.Message.ToString());    
    }
...

您是否为Excel文档添加了MIME类型? 此外,请检查这篇文章设置为Excel文件的MIME类型

链接地址: http://www.djcxy.com/p/46851.html

上一篇: Create an excel file in ashx from byte[] array for client download

下一篇: Set an excel file as response in REST Service