using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Spreadsheet; namespace ReadXlsx { class Program { const string xslPath = @"C:\temp\20190725\test.xlsx"; static void Main(string[] args) { SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(xslPath, false); WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart; SharedStringTablePart sharedStringTablePart = workbookPart.SharedStringTablePart; SharedStringTable sharedStringTable = sharedStringTablePart.SharedStringTable; List sharedStringItems = sharedStringTable.Elements().ToList(); List sheets = workbookPart.Workbook.Sheets.Cast().ToList(); List worksheetParts = workbookPart.WorksheetParts.ToList(); List sheetDatas = worksheetParts.SelectMany(x => x.Worksheet.Elements()).ToList(); foreach (Sheet sheet in sheets) { Console.WriteLine($"{sheet.Name.Value}: {sheet.Id}"); string rid = sheet.Id; WorksheetPart worksheetPart = workbookPart.GetPartById(rid) as WorksheetPart; SheetData sheetData = worksheetPart.Worksheet.Elements().Single(); List rows = sheetData.Elements().ToList(); Console.WriteLine($"Row count: {rows.Count}"); foreach (Row row in rows) { List cells = row.Elements().ToList(); Console.WriteLine($"Cell count: {cells.Count}"); foreach (Cell cell in cells) { if (cell.DataType == "s") { Console.WriteLine(sharedStringItems[int.Parse(cell.CellValue.Text)].Text.Text); } else { Console.WriteLine(cell.CellValue.Text); } } Console.WriteLine("======================================================================================="); } Console.WriteLine("======================================================================================="); } spreadsheetDocument.Close(); } } }