Create Excel file from XML file

XML is platform independent language, any operating system and platform can able to parse XML document. It is a format to represent the data. As it is platform independent, so that most of the programming languages can able to parse it without any plug-in or third party tool.

Microsoft C# and application also support parsing of XML using it's in built class library. You can parse XML data and using the data you can able to generate Excel sheet. For this you have to add Microsoft Excel reference in your ASP.Net web page. Follow the following steps to make reference.

Step 1) Go to Project Tab of your visual studio environment àAdd reference

Step 2) Goto COM tab  àMicrosoft Excel 12.2 object library à OK.

Now you have added successfully the Microsoft object library in your project.

Step 3) Add the following namespace in your ASP.Net page

using Excel = Microsoft.Office.Interop.Excel; 

Step 4) Create Product.xml file with the code below.

<Product_name>Product 1</Product_name>
<Product_name>Product 2</Product_name>
<Product_name>Product 3</Product_name>
<Product_name>Product 4</Product_name>

Step 5) Put the following code in buttons on click event.

Excel.Application xlApp ;

Excel.Workbook xlWorkBook ;

Excel.Worksheet xlWorkSheet ;

object misValue = System.Reflection.Missing.Value;

DataSet ds = new DataSet();
XmlReader xmlFile ;
int i = 0;
int j = 0;
xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xmlFile = XmlReader.Create("Product.xml", new XmlReaderSettings());
for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
    for (j = 0; j <= ds.Tables[0].Columns.Count - 1; j++)
        xlWorkSheet.Cells[i + 1, j + 1] = ds.Tables[0].Rows[i].ItemArray[j].ToString ();
xlWorkBook.SaveAs("D\\filename.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue,misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue,misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
Response.write("File has saved in D drive");