如何使用 OpenXML C# 解析 excel sheet 中的数字
How to parse numbers from excel sheet using OpenXML C#
我的主要目标是解析电子表格中的电子邮件。我需要的是检测单元格是否包含电子邮件以外的任何内容(错误格式、布尔值、数字...),以将此单元格添加到数组中(假设无效)
我做了什么:
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 它假设在电子表格中有布尔值和数字时提取数字。问题出在哪里?如何提取那些非字符串值?
我使用了 EPPLUS Core,它是 OpenXML 的一个很好的包装器
我的主要目标是解析电子表格中的电子邮件。我需要的是检测单元格是否包含电子邮件以外的任何内容(错误格式、布尔值、数字...),以将此单元格添加到数组中(假设无效)
我做了什么:
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 它假设在电子表格中有布尔值和数字时提取数字。问题出在哪里?如何提取那些非字符串值?
我使用了 EPPLUS Core,它是 OpenXML 的一个很好的包装器