protected override DataTable ReadFile() { string outputPath = CopyFileToAppData(); DataTable dataTable = new DataTable(); using (DocumentFormat.OpenXml.Packaging.SpreadsheetDocument spreadsheetDocument = DocumentFormat.OpenXml.Packaging.SpreadsheetDocument.Open(outputPath, false)) { DocumentFormat.OpenXml.Packaging.WorksheetPart worksheetPart = GetWorksheetPartByName(spreadsheetDocument, _sheetName); DocumentFormat.OpenXml.Spreadsheet.SheetData sheetData = worksheetPart.Worksheet.Elements <DocumentFormat.OpenXml.Spreadsheet.SheetData>().First(); IEnumerable <Row> rows = sheetData.Descendants <Row>(); foreach (Cell cell in rows.ElementAt(0)) { dataTable.Columns.Add(GetCellValue(spreadsheetDocument, cell)); } for (int i = 1; i < rows.Count() - 1; i++) { DataRow tempRow = dataTable.NewRow(); for (int j = 0; j < rows.ElementAt(i).Descendants <Cell>().Count(); j++) { tempRow[j] = GetCellValue(spreadsheetDocument, rows.ElementAt(i).Descendants <Cell>().ElementAt(j)); } dataTable.Rows.Add(tempRow); } } return(dataTable); }