Advertisement
private775

C#: read xml file using OpenXML SDK

Jul 29th, 2019
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.60 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using DocumentFormat.OpenXml.Packaging;
  7. using DocumentFormat.OpenXml.Spreadsheet;
  8.  
  9. namespace ReadXlsx
  10. {
  11.     class Program
  12.     {
  13.         const string xslPath = @"C:\temp\20190725\test.xlsx";
  14.         static void Main(string[] args)
  15.         {
  16.             SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(xslPath, false);
  17.             WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
  18.  
  19.             SharedStringTablePart sharedStringTablePart = workbookPart.SharedStringTablePart;
  20.             SharedStringTable sharedStringTable = sharedStringTablePart.SharedStringTable;
  21.             List<SharedStringItem> sharedStringItems = sharedStringTable.Elements<SharedStringItem>().ToList();
  22.  
  23.  
  24.             List<Sheet> sheets = workbookPart.Workbook.Sheets.Cast<Sheet>().ToList();
  25.             List<WorksheetPart> worksheetParts = workbookPart.WorksheetParts.ToList();
  26.             List<SheetData> sheetDatas = worksheetParts.SelectMany(x => x.Worksheet.Elements<SheetData>()).ToList();
  27.  
  28.  
  29.             foreach (Sheet sheet in sheets)
  30.             {
  31.                 Console.WriteLine($"{sheet.Name.Value}: {sheet.Id}");
  32.                 string rid = sheet.Id;
  33.                 WorksheetPart worksheetPart = workbookPart.GetPartById(rid) as WorksheetPart;
  34.                 SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().Single();
  35.                 List<Row> rows = sheetData.Elements<Row>().ToList();
  36.                 Console.WriteLine($"Row count: {rows.Count}");
  37.                 foreach (Row row in rows)
  38.                 {
  39.                     List<Cell> cells = row.Elements<Cell>().ToList();
  40.                     Console.WriteLine($"Cell count: {cells.Count}");
  41.                     foreach (Cell cell in cells)
  42.                     {
  43.                         if (cell.DataType == "s")
  44.                         {
  45.                             Console.WriteLine(sharedStringItems[int.Parse(cell.CellValue.Text)].Text.Text);
  46.                         }
  47.                         else
  48.                         {
  49.                             Console.WriteLine(cell.CellValue.Text);
  50.                         }
  51.                     }
  52.                     Console.WriteLine("=======================================================================================");
  53.                 }
  54.                 Console.WriteLine("=======================================================================================");
  55.             }
  56.             spreadsheetDocument.Close();
  57.         }
  58.     }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement