打开XML读取Excel文件不会进入循环读取Excel表格
我有一个场景,我需要在MVC应用程序中读取Excel文件,我需要这个在服务器上运行,因此我使用Open XML,我有一个问题,我的代码不会进入表中的行循环,请参阅下面的代码,并告诉我如何纠正我的代码。
if (file.ContentLength > 0) { string path = file.FileName; using (SpreadsheetDocument doc = SpreadsheetDocument.Open(path, false)) { WorkbookPart workbookPart = doc.WorkbookPart; WorksheetPart worksheetPart = workbookPart.WorksheetParts.First(); SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First(); foreach (Row r in sheetData.Elements<Row>()) { foreach (Cell c in r.Elements<Cell>()) { string text = c.CellValue.Text; } } } }
任何想法,你的帮助将不胜感激,我一直在尝试多个接近,但我没有得到在foreach循环fr一些奇怪的原因。
我正在使用Excel 2013,请参阅下面的工作簿图像。
我一直在使用下面的代码,这对我来说工作得很好。
using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(sFileNameWithPath, false)) { WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart; WorksheetPart worksheetPart = GetWorksheetPart(workbookPart, sSheetName); SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First(); bool bHasChildren = sheetData.HasChildren; if (bHasChildren) { for (int iCounter1 = 1; iCounter1 < sheetData.Elements<Row>().Count(); iCounter1++) { Row rDataRow = sheetData.Elements<Row>().ElementAt(iCounter1); for (int iCounter = 0; iCounter < rDataRow.ChildElements.Count; iCounter++) { Cell oCell = (Cell)rDataRow.ChildElements[iCounter]; } } } }
让我知道这是否有帮助。
或者,您可以使用您的代码进行以下更改
using (SpreadsheetDocument doc = SpreadsheetDocument.Open(sFileNameWithPath, false)) { WorkbookPart workbookPart = doc.WorkbookPart; string relId = workbookPart.Workbook.Descendants<Sheet>().First(s => "Claims".Equals(s.Name)).Id; WorksheetPart worksheetPart = (WorksheetPart)workbookPart.GetPartById(relId); SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First(); foreach (Row r in sheetData.Elements<Row>()) { foreach (Cell c in r.Elements<Cell>()) { string text = c.CellValue.Text; } } }
请注意,我使用了excel表格名称“Claims”,因此请检查它是否有效,如果是, 把它放在另一个function,使其通用