openXml c# при получение текстового значения из ячейки выдается число(похоже на кодировку)

недавно появилась необходимось загрузки данных из эксель файла в базу данных с предварительным парсингом, данные цифрового формата загружаются без проблем и отображаются как надо, а вот текстовые не В зависимости от языка выдаются в виде чисел, два дня убил на поиск решения, ничего нет, пробовал другие библиотеки как closedXml, там еще больше проблем((

using (var document = SpreadsheetDocument.Open(ExelName, false))
{
    WorkbookPart workbookPart = document.WorkbookPart ?? document.AddWorkbookPart();
    WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
    SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();

    foreach (Row r in sheetData.Elements<Row>())
    {

        
            List<Cell> cells = r.Elements<Cell>().ToList();
            int post_index = int.Parse(cells[0].InnerText);
            string city = cells[1].CellValue.InnerText;
            string name_street = cells[2].CellValue.Text;
            string num_house = cells[3].CellValue.Text;
            string num_flat = cells[4].CellValue.Text;
            int hot = int.Parse(cells[5].CellValue.Text);
            int cold = int.Parse(cells[6].CellValue.Text);
            Console.WriteLine($"{post_index},{city},{name_street},{num_house},{num_flat},{hot},{cold}");
       //данные в эксель строках - вв || вв || аа || йй || а || а || а
       //возвращаемые значения - 4,4,5,6,3,3,3

        


    }
}

}

решил с помощью следующего метода на версии старше чем 3:

private static string GetCellValue(SpreadsheetDocument doc, Cell cell)
{
    string value = cell.CellValue.InnerText;
    if (cell.DataType != null && cell.DataType.Value == 
    CellValues.SharedString)
    {
        return doc.WorkbookPart.SharedStringTablePart.SharedStringTable.ChildElements.GetItem(int.Parse(value)).InnerText;
    }
    return value;
}

Ответы (0 шт):