如何使用OpenXML C#从excel表中解析数字>> [

问题描述 投票:1回答:1
我的主要目标是解析电子表格中的电子邮件。我需要检测是否某个单元格包含除电子邮件以外的其他任何内容(格式错误,布尔值,数字...),以将该单元格添加到数组中(假设无效)

我做了什么:

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,它假定在提取数字的同时电子表格中有布尔值和数字。哪里有问题?如何提取那些非字符串值?我的主要目标是解析电子表格中的电子邮件。我需要检测是否某个单元格包含除电子邮件以外的其他任何内容(格式错误,布尔值,数字...),以将该单元格添加到数组中(...
c# excel asp.net-core openxml openxml-sdk
1个回答
1
投票
我使用了EPPLUS Core,它是OpenXML的很好的包装器
© www.soinside.com 2019 - 2024. All rights reserved.