无法打开通过在C#中保存字节流创建的Excel文件(.xlsx)

无法打开通过在C#中保存字节流创建的Excel文件(.xlsx),c#,.net,excel,C#,.net,Excel,我试图将Excel(.xlsx)文件保存在磁盘中,并发送到Web服务。我使用的代码如下,但是当我单击保存的文件时,它返回一个“文件已损坏且无法打开”错误。但同样的方法也适用于CSV文件 string dataFile = await Request.Content.ReadAsStringAsync(); byte[] byteArray = Encoding.UTF8.GetBytes(dataFile); MemoryStream stream_ = new MemoryStre

我试图将Excel(.xlsx)文件保存在磁盘中,并发送到Web服务。我使用的代码如下,但是当我单击保存的文件时,它返回一个“文件已损坏且无法打开”错误。但同样的方法也适用于CSV文件

  string dataFile = await Request.Content.ReadAsStringAsync();
  byte[] byteArray = Encoding.UTF8.GetBytes(dataFile);
  MemoryStream stream_ = new MemoryStream(byteArray);
  MultipartParser.MultipartParser mp = new MultipartParser.MultipartParser(stream_);

  // Save Excel file
  File.WriteAllBytes(@"C:\temp\output.xlsx", mp.FileContents);

以下是有效的:

        string root = HttpContext.Current.Server.MapPath("~/App_Data");
        var provider = new MultipartFormDataStreamProvider(root);

        try
        {
            string fileName = "";
            string fileLocalName = "";
            var result = await Request.Content.ReadAsMultipartAsync(provider);
            foreach (MultipartFileData file in provider.FileData)
            {
                fileLocalName = file.LocalFileName;
            }

            File.WriteAllBytes(@"C:\temp\output.xlsx", File.ReadAllBytes(fileLocalName));
        }

感谢您的帮助,Ben Robinson、Daniel A.White、Ali Sepheri.Kh和Faisal Hafeez提供了帮助

您是否尝试过处理流?您的数据是否为xlsx格式?我不这么认为。是的,它是xlsx格式的。不要使用
ReadAsStringAsync
它是一个二进制文件!csv是文本文件,可以通过这种方式安全读取。如果您试图检索上载的文件,您可能需要类似
var provider=new MultipartMemoryStreamProvider();wait Request.Content.ReadAsMultipartAsync(提供程序)