无法打开通过在C#中保存字节流创建的Excel文件(.xlsx)
我试图将Excel(.xlsx)文件保存在磁盘中,并发送到Web服务。我使用的代码如下,但是当我单击保存的文件时,它返回一个“文件已损坏且无法打开”错误。但同样的方法也适用于CSV文件无法打开通过在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
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(提供程序)代码>