private775 icon

C#: read xml file using OpenXML SDK

private775 | PRO | 07/29/19 11:41:00 AM UTC | 0 ⭐ | 593 👁️ | Never ⏰ | []
C# |

2.6 KB

|

None

|

0 👍

/

0 👎

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<SharedStringItem> sharedStringItems = sharedStringTable.Elements<SharedStringItem>().ToList();
 
 
            List<Sheet> sheets = workbookPart.Workbook.Sheets.Cast<Sheet>().ToList();
            List<WorksheetPart> worksheetParts = workbookPart.WorksheetParts.ToList();
            List<SheetData> sheetDatas = worksheetParts.SelectMany(x => x.Worksheet.Elements<SheetData>()).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<SheetData>().Single();
                List<Row> rows = sheetData.Elements<Row>().ToList();
                Console.WriteLine($"Row count: {rows.Count}");
                foreach (Row row in rows)
                {
                    List<Cell> cells = row.Elements<Cell>().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();
        }
    }
}

Comments