C# 如何将IEnumerable转换为字节64以进行文件下载

C# 如何将IEnumerable转换为字节64以进行文件下载,c#,excel,asp.net-web-api,mediatypeformatter,web-api-contrib,C#,Excel,Asp.net Web Api,Mediatypeformatter,Web Api Contrib,我正在使用WebApiContrib.Formatting.xlsx创建和下载Microsoft Excel文件。我的问题是,当从客户端调用时,文件无法打开,并且尝试了几种方法。处理PDF时,将输出转换为字节64的问题得到了解决,如下所示: var response = new HttpResponseMessage { Content = new StringContent(Convert.ToBase64String(o

我正在使用WebApiContrib.Formatting.xlsx创建和下载Microsoft Excel文件。我的问题是,当从客户端调用时,文件无法打开,并且尝试了几种方法。处理PDF时,将输出转换为字节64的问题得到了解决,如下所示:

var response = new HttpResponseMessage
                {
                    Content = new StringContent(Convert.ToBase64String(output.ToArray())) 
                };
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
            response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                {
                    FileName = "Report.pdf"
                };

            return response;
对于WebApiContrib.Formatting.xlsx,我有一个IEnumerable。如何将其转换为与PDF相同的方式

var subscriptionExcelModels=转换为SubscriptionExcelModel[]的SubscriptionPlans??订阅计划已转换为数组

这是excel文件代码最后一部分的片段:

   var ret = Request.CreateResponse(HttpStatusCode.OK,subscriptionExcelModels); 
    ret.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
    ret.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
    {
        FileName = "Report.xlsx"
    };

    return ret;

为什么不将其作为MemoryStream发送呢?您应该创建一个媒体类型格式化程序,如下所示:尝试content-type应用程序/vnd.openxmlformats-officedocument.spreadsheetml。sheet@Fals这是为了创建一个PDF,而我的已经开始工作了。@EBrown我想这是因为如果我正在读取一个文件,而不是动态创建它,如何将IEnumerable转换为MemoryStream?