Click here to Skip to main content
15,888,803 members
Please Sign up or sign in to vote.
1.00/5 (3 votes)
See more:
I am trying to convert JSON file to excel file. How we can achieve this in C#. Need code for the same

What I have tried:

I am trying to convert JSON file to excel file. How we can achieve this in C#. Need code for the same
Posted
Updated 1-Mar-16 23:05pm
Comments
dan!sh 2-Mar-16 0:45am    
This is not how this site works. Read the guidelines to post proper question here.
What have you tried so far?

What I understant you I guess this will help you:


C#
[AcceptVerbs(HttpVerbs.Get)]
public FileResult ImportOrders()
{

		
		DataTable dt = new DataTable();
		
		dt = "get data here";
		
		MemoryStream MyMemoryStream = null;
		using (XLWorkbook wb = new XLWorkbook())
		{
			wb.Worksheets.Add(dt, "YourReport");

			MyMemoryStream = new MemoryStream();
			wb.SaveAs(MyMemoryStream);
			MyMemoryStream.WriteTo(Response.OutputStream);

			return File(MyMemoryStream, "application/vnd.ms-excel", "YourReport.xlsx");
		}

}


So, here you don't need to convert JSON to excel.
Call this action directrly. It will directrly download output to excel.ectrly download output to excel.

else you can try this one, but this gonna convert JSON to CSV

C#
function JSONToCSVConvertor(JSONData, ReportTitle, ShowLabel) {
    //If JSONData is not an object then JSON.parse will parse the JSON string in an Object
    var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;

    var CSV = '';
    //Set Report title in first row or line

    //CSV += ReportTitle + '\r\n\n';

    //This condition will generate the Label/Header
    if (ShowLabel) {
        var row = "";

        //This loop will extract the label from 1st index of on array
        for (var index in arrData[0]) {

            //Now convert each value to string and comma-seprated
            row += '<b>'+index + '</b>,';
        }

        row = row.slice(0, -1);

        //append Label row with line break
        CSV += row + '\r\n';
    }

    //1st loop is to extract each row
    for (var i = 0; i < arrData.length; i++) {
        var row = "";

        //2nd loop will extract each column and convert it in string comma-seprated
        for (var index in arrData[i]) {
            row += '"' + arrData[i][index] + '",';
        }

        row.slice(0, row.length - 1);

        //add a line break after each row
        CSV += row + '\r\n';
    }

    if (CSV == '') {
        alert("Invalid data");
        return;
    }

    //Generate a file name
    var fileName = '';
    //this will remove the blank-spaces from the title and replace it with an underscore
    fileName += ReportTitle.replace(/ /g, "_");

    //Initialize file format you want csv or xls
    var uri = 'data:text/csv;charset=utf-8,' + escape(CSV);

    // Now the little tricky part.
    // you can use either>> window.open(uri);
    // but this will not work in some browsers
    // or you will not get the correct file extension    

    //this trick will generate a temp <a /> tag
    var link = document.createElement("a");
    link.href = uri;

    //set the visibility hidden so it will not effect on your web-layout
    link.style = "visibility:hidden";
    link.download = fileName + ".csv";

    //this part will append the anchor tag and remove it after automatic click
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
};



(Y)
 
Share this answer
 
v2
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900