Ошибка NullReference при чтении xlsx EPPlus Core - PullRequest
1 голос
/ 25 марта 2019

Я пытаюсь загрузить файл Excel с помощью EPPlus.Мне кажется, что мой файл Excel был пуст, но в нем есть содержимое.

Я получаю эту ошибку: worksheet.Dimension.Rows = 'worksheet.Dimension.Rows' вызвала исключение типа 'System.NullReferenceException '

в этой строке: int rowCount = worksheet.Dimension.Rows;

[HttpPost("Excel")]
    public string UploadExcel(IFormFile file)
    {
        var filePath = Path.GetTempFileName();
        FileInfo excel = new FileInfo(filePath);

        using (ExcelPackage package = new ExcelPackage(excel))
        {
            StringBuilder sb = new StringBuilder();
            ExcelWorksheet worksheet = package.Workbook.Worksheets[file.FileName];

            int rowCount = worksheet.Dimension.Rows;
            int ColCount = worksheet.Dimension.Columns;
            bool bHeaderRow = true;
            for (int row = 1; row <= rowCount; row++)
            {
                for (int col = 1; col <= ColCount; col++)
                {
                    if (bHeaderRow)
                    {
                        sb.Append(worksheet.Cells[row, col].Value.ToString() + "\t");
                    }
                    else
                    {
                        sb.Append(worksheet.Cells[row, col].Value.ToString() + "\t");
                    }
                }
                sb.Append(Environment.NewLine);
            }
            return sb.ToString();
        }

1 Ответ

2 голосов
/ 25 марта 2019

Можете ли вы убедиться, что рабочие листы загружаются?

//examine in the debugger to make sure the worksheet you want is loaded
var worksheets = package.Workbook.Worksheets.ToList();

Если это не сработает, вы можете попробовать один из них?

var worksheet = package.Workbook.Worksheets[0];
var worksheetFirst = package.Workbook.Worksheets.First();

UPDATE:

Настоящая ошибка в том, что вы пытаетесь прочитать временный файл с var filePath = Path.GetTempFileName();. Вам нужно прочитать фактический файл Excel. Например, вы можете использовать Path.GetFullPath("path/to/the/excel/file.xls");

...