簡體   English   中英

如何在C#中讀取Excel(.XLS和.XLSX)文件?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM