[英]How to read Excel (.XLS and .XLSX) file in C#?
我试图在C#.net core 2.2中读取Excel文件。 为了阅读Excel,我使用的是EpPlus 。 我从ASP.NET Core中的文件上传中获取了参考。 我有这样的Api
public async Task<ActionResult<ReappropiationAccountViewModel>> Post(IFormFile file)
{
return Ok(await Mediator.Send(new SaveReappropriationAccountCommand { ReappropiationAccountFile = file }));
}
我的命令是这样的
public class SaveReappropriationAccountCommand : IRequest<ReappropiationAccountViewModel>
{
public IFormFile ReappropiationAccountFile { get; set; }
}
在我的处理程序中,我试图像这样阅读Excel
using (var memoryStream = new MemoryStream())
{
await request.ReappropiationAccountFile.CopyToAsync(memoryStream);
using (ExcelPackage package = new ExcelPackage(memoryStream))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets[0];
int rowCount = worksheet.Dimension.End.Row;
int colCount = worksheet.Dimension.End.Column;
for (int row = 1; row <= rowCount; row++)
{
for (int col = 1; col <= colCount; col++)
{
var rowValue = worksheet.Cells[row, col].Value;
}
}
}
}
但是我无法读取上传的Excel,因为它在using (ExcelPackage package = new ExcelPackage(memoryStream))
行时抛出InvalidDataException
。
异常消息:
InvalidDataException:该文件不是有效的包文件。 如果文件已加密,请在构造函数中提供密码。
一切似乎绝对正确,但无法读取Excel数据。 尝试阅读此Excel文件:
我的问题是我哪里出错了?
您需要在写入内存流之后将内存流设置回开头,然后再将其传递给ExcelPackage以进行读取:
memoryStream.Position = 0;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.