In my previous article I talked about Inserting in Excel file from C# collection using Open XML SDK 2.0 before you go ahead, I strongly recommend you to read this post.

In this post, let us try to do the reverse process. We will read all the rows of Excel file List of Bloggers. Again start with creating the custom class

Create Entity class


Add namespace


Setting initial code as of Excel template

I will walkthrough line by line of codes to make you easier for you to get a sense of the code.



In above code snippet last three lines should appear easier to you. However in first line of code you might be thinking, “Hey why string array of length 4? “ Answer of this that, if you notice our excel file it is having four columns. So in our logic we need a string array of four. If you are working with excel file with columns 10 then your string array should of size 10.


Then I have list of bloggers and each blogger object will represent a row of the excel file.


Open Excel file




If you have save template Excel file with different name in different location then you will have to change the location in above code.

If you have changed the sheet name to item then you will fetch it as below,



If you have not renamed the sheet and want to insert in the first sheet, you can do like below. Make note of code in comment to fetch the first sheet.



Read Row by Row


In above code snippet

  1. We are iterating through all the rows in open sheet.
  2. Iterating through all the cells on selected rows.
  3. There is a check because we don’t want to read first row. Since first row of the excel will contain headers not the real data.

If all the cells contains numeric value then above code is suffice but there may be string or Boolean values as well. So we need to check that also as below,

Checking for string cell values



Checking for Boolean cell values


Set the value in string array as below,


Now we need to create object of Bloggers class by values from string array.


Consolidating all together we can create a function to read excel file

static List<Bloggers> ReadExcelFileDOM(string filename)

string[] strProperties = new string[4];
List<Bloggers> lstBloggers = new List<Bloggers>();
Bloggers facet = null;
int j = 0;

using (SpreadsheetDocument myDoc = SpreadsheetDocument.Open(filename, true))
WorkbookPart workbookPart = myDoc.WorkbookPart;
IEnumerable<Sheet> Sheets = myDoc.WorkbookPart.Workbook.GetFirstChild<Sheets>().Elements<Sheet>().Where(s => s.Name == "items");
if (Sheets.Count() == 0)
string relationshipId = Sheets.First().Id.Value;
WorksheetPart worksheetPart = (WorksheetPart)myDoc.WorkbookPart.GetPartById(relationshipId);
SheetData sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>();

List<string> lstRow = new List<string>();

int i = 1;
string value;
foreach (Row r in sheetData.Elements<Row>())
if (i != 1)
foreach (Cell c in r.Elements<Cell>())
if (c != null)
value = c.InnerText;

if (c.DataType != null)
switch (c.DataType.Value)
case CellValues.SharedString:
var stringTable = workbookPart.GetPartsOfType<SharedStringTablePart>().FirstOrDefault();
if (stringTable != null)
value = stringTable.SharedStringTable.
case CellValues.Boolean:
switch (value)
case "0":
value = "FALSE";
value = "TRUE";

strProperties[j] = value;
j = j + 1;

j = 0;

i = i + 1;
facet = new Bloggers();
facet.Name = strProperties[0];
facet.Intrest = strProperties[1];
facet.NumberofPosts = strProperties[2];
facet.Speaker = strProperties[3];

return lstFacetToInsert;


And you can make function call as below,

List<SCDataFacets> result =  ReadExcelFileDOM("D:\\MyExcel.xlsx");

foreach (var a in result)



This was all required to read a excel file using Open XML SDK. I hope this post was useful to you. Thanks for reading Smile

If you find my posts useful you may like to follow me on twitter or may like Facebook page of my blog If you want to see post on a particular topic please do write on FB page or tweet me about that, I would love to help you


2 thoughts on “Reading EXCEL FILE in a collection using Open XML SDK 2.0

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s