What is wrong with this code
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Packaging;
using System.Linq;
using System.Xml;
using System.Xml.Linq;

class ExcelReader
{
    private MemoryStream _memoryStream;
    private List<List<object>> _data;

    public ExcelReader(MemoryStream memoryStream)
    {
        _memoryStream = memoryStream;
        _data = new List<List<object>>();
    }

    public void ReadExcelFile()
    {
        Package package = Package.Open(_memoryStream, FileMode.Open, FileAccess.Read);
        XNamespace xRelationships = "http://schemas.openxmlformats.org/officeDocument/2006/relationships";
        XNamespace xSpreadsheetMain = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";

        PackagePart sharedStringsPart = package.GetRelationshipsByType(xRelationships.ToString() + "sharedStrings")
            .Select(r => package.GetPart(r.TargetUri)).FirstOrDefault();

        // Initialize an empty shared strings list
        List<string> sharedStrings = new List<string>();

        // If a shared strings part is present, read the strings
        if (sharedStringsPart != null)
        {
            XDocument sharedStringsDoc = XDocument.Load(XmlReader.Create(sharedStringsPart.GetStream()));
            sharedStrings = sharedStringsDoc.Descendants(xSpreadsheetMain + "t").Select(t => t.Value).ToList();
        }

        PackagePart sheetPart = package.GetRelationshipsByType(xRelationships.GetType() + "worksheet")
            .Select(r => package.GetPart(r.TargetUri)).FirstOrDefault();
        XDocument sheetDoc = XDocument.Load(XmlReader.Create(sheetPart.GetStream()));

        List<List<object>> data = new List<List<object>>();

        foreach (var row in sheetDoc.Descendants(xSpreadsheetMain + "row"))
        {
            List<object> rowData = new List<object>();

            foreach (var cell in row.Elements(xSpreadsheetMain + "c"))
            {
                string cellValue = cell.Elements(xSpreadsheetMain + "v").FirstOrDefault()?.Value;
                if (cellValue != null)
                {
                    string cellType = cell.Attribute(xSpreadsheetMain + "t")?.Value;

                    if (cellType == "s")
                {
                        rowData.Add(sharedStrings[int.Parse(cellValue)]);
                }
                else
                    {
                        rowData.Add(cellValue);
                    }
                }
            }

            data.Add(rowData);
        }

        _data = data;
    }

    public List<List<object>> GetData()
    {
        return _data;
    }
}

// Example usage:
class Program
{
    static void Main(string[] args)
    {
        // Read the Excel file into a MemoryStream
        FileStream fileStream = new FileStream("tst.xlsx", FileMode.Open);
        Console.WriteLine(fileStream.Length);
        MemoryStream memoryStream = new MemoryStream();
        fileStream.CopyTo(memoryStream);

        // Pass the MemoryStream to ExcelReader
        ExcelReader excelReader = new ExcelReader(memoryStream);
        excelReader.ReadExcelFile();
        List<List<object>> data = excelReader.GetData();

        foreach (List<object> row in data)
        {
            Console.WriteLine(string.Join(", ", row));
        }
    }
}