[英]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.