Как разобрать номера из листа Excel с помощью Open XML C# - PullRequest
1 голос
/ 09 января 2020

Моя главная цель - анализировать электронные письма из электронной таблицы. Мне нужно определить, содержит ли ячейка что-либо, кроме Email (неправильный формат, логическое число, номер ...), чтобы добавить эту ячейку в массив (предположим, инвалиды)

Что я сделал:

using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(fileName, false))
        {
            WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
            WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
            Cell cell = new Cell();
            OpenXmlReader reader = OpenXmlReader.Create(worksheetPart);

            Sheet sheet = workbookPart.Workbook.Descendants<Sheet>().Where(s => s.Name == sheetName).FirstOrDefault();

            worksheetPart = (WorksheetPart)(workbookPart.GetPartById(sheet.Id));

            while (reader.Read())
            {
                if (reader.ElementType == typeof(CellValue))
                {
                    cell = worksheetPart.Worksheet.Descendants<Cell>().Where(c => c.CellReference == String.Format("A{0}", reader.GetText())).FirstOrDefault();

                    if (cell != null && cell.InnerText.Length > 0)
                    {
                        var value = cell.InnerText;

                        if (cell.DataType != null)
                        {
                            var stringTable = workbookPart.GetPartsOfType<SharedStringTablePart>().FirstOrDefault();

                            if (cell.DataType.Value == CellValues.SharedString)
                            {
                                value = stringTable.SharedStringTable.ElementAt(int.Parse(value)).InnerText;
                                values.Add(value);
                            }
                            else
                            {
                                // add the invalid to the array
                            }
                        }
                    }
                }
            }
            spreadsheetDocument.Close();
        }

Забудьте о проверке электронной почты, моя проблема в том, что я хочу извлечь нестроковые значения. Я много чего пробовал, но код не достигает else где предполагается извлечь числа, пока в таблице есть логические значения и числа. В чем проблема? Как извлечь эти не строковые значения?

1 Ответ

1 голос
/ 01 апреля 2020

Я использовал EPPLUS Core, который является хорошей оболочкой для Open XML

...